欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

告诉你什么是优雅的设计(2)--------重构EasyMonitor

程序员文章站 2022-05-17 20:12:05
...
  EasyMonitor1.0出来后不久,玩着玩着,我就敏锐地发现"被第一颗子弹击中",设计还有问题。根据先贤的一些经验告诉我们,被击中后就应该马上重构。于是,马不停蹄,着手1.5版本的改造。为什么1.0就直奔1.5呢,因为这次重构之后的结构已经与原来的设计有了比较大的变化,也扩展了一些功能。
可能你已经迫不及待想知道第一颗子弹是什么?研究了EasyMonitor1.0设计的同学,不知道有没有发现,action所做的扩展无法被processor复用,反之亦然。具体地说,就是监视动作无法成为处理动作。例如,你想在处理动作中也去进行url监控,则不得不在processor中重新实现一次。
  如何解决这个问题呢?伟大的java设计者已经给了我们设计的灵感,将世间万物抽象为一个Object,任何东西都从之继承。
于是一个优雅的设计方案浮出水面,我们将所有的行为都抽象成一个Action。下面是1.5的类图,不妨与1.0作个对比:

告诉你什么是优雅的设计(2)--------重构EasyMonitor
            
    
    博客分类: Java 设计模式CC++C#XML 

以下是一个案例的配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<TaskManager>
		<!-- 周期性任务 -->
		<ScheduleTask id="2" name="98服务器监视">
		
			<!-- 时间间隔,单位是秒 -->
		    <interval>30</interval>
		    
		    <!-- URL监视动作 -->
			<Monitor>
				<url>http://192.168.1.98:8080</url>
			</Monitor>
			
			<!-- 监控结果处理器 -->
			<Processor>
				<!-- 监视成功处理队列  
				<OnSuccess>		
					<RunProgram>
						<path>cmd /c start notepad</path>
					</RunProgram>
				</OnSuccess>
				-->
				<!-- 监视失败处理队列  -->
				<OnFailure>
					
					<RunProgram>
						<path>E:\cluster\tomcat7\bin\startup.bat</path>
					</RunProgram>
				
					<!-- 发送邮件 -->
					<SendMail>
						<receivers>holdmydream@126.com,javaeye2010@126.com</receivers>
						<subject>警告</subject>
						<content>你的程序已经杯具。不必太伤心,神马都是浮云。</content>
					</SendMail>
						
				</OnFailure>
			</Processor>	
		</ScheduleTask>	
		
		
		<!-- 定时任务 -->
		<OnTimeTask id="1" name="100服务器监视">
			<!-- yyyy-MM-dd hh:mm:ss -->
		    <time>2011-01-20 15:49:30</time>
			<Monitor>
				<url>http://192.168.1.100:8080</url>
			</Monitor>
			<Processor>		
				<OnSuccess>	
					<RunProgram>
						<path>cmd /c start notepad</path>
					</RunProgram>
				</OnSuccess>			
				<OnFailure>	
					<RunProgram>
						<path>cmd /c start msconfig</path>
					</RunProgram>
				</OnFailure>
			</Processor>	
		</OnTimeTask>
		
</TaskManager>





程序打包下载。

通过这次重构告诉大家三件事:

1.第一颗子弹原则很给力
2.学会模式而后忘记模式
3.没有完美的设计,只有更优雅的设计