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

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

[img]http://yangguo.iteye.com/upload/picture/pic/80360/400f95c1-b68d-39f7-9102-274521fe08ae.png[/img]

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


<?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.没有完美的设计,只有更优雅的设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值