EasyMonitor1.0出来后不久,玩着玩着,我就敏锐地发现"被第一颗子弹击中",设计还有问题。根据先贤的一些经验告诉我们,被击中后就应该马上重构。于是,马不停蹄,着手1.5版本的改造。为什么1.0就直奔1.5呢,因为这次重构之后的结构已经与原来的设计有了比较大的变化,也扩展了一些功能。
可能你已经迫不及待想知道第一颗子弹是什么?研究了EasyMonitor1.0设计的同学,不知道有没有发现,action所做的扩展无法被processor复用,反之亦然。具体地说,就是监视动作无法成为处理动作。例如,你想在处理动作中也去进行url监控,则不得不在processor中重新实现一次。
如何解决这个问题呢?伟大的java设计者已经给了我们设计的灵感,将世间万物抽象为一个Object,任何东西都从之继承。
于是一个优雅的设计方案浮出水面,我们将所有的行为都抽象成一个Action。下面是1.5的类图,不妨与1.0作个对比:
以下是一个案例的配置文件:
<?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.没有完美的设计,只有更优雅的设计
分享到:
相关推荐
本书解释重构的原理(principles)和最佳实践方式(best practices),并指出何时何地你应该开始挖掘你的代码以求改善。本书的核心是壹份完整的重构名录(catalog of refactoring),其中每壹项都介绍壹种经过实证的...
本书讲述重构,即在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
重构-改善既有代码的设计.pdf重构-改善既有代码的设计.pdf
重构-改善既有代码的设计 强烈推荐! 重构-改善既有代码的设计 强烈推荐! 重构-改善既有代码的设计 强烈推荐! 重构-改善既有代码的设计 强烈推荐!
重构--改善既有代码的设计 文字版 epub格式
java开发经典书籍,重构--改善既有代码的设计_中文版 java开发经典书籍,重构--改善既有代码的设计_中文版 java开发经典书籍,重构--改善既有代码的设计_中文版
重构--改善既有代码的设计 重构--改善既有代码的设计
他还提到了重构与设计模式的关系,指出重构可以帮助实现和维护设计模式,从而使软件结构更加优雅。 总之,《重构 -改善既有代码的设计》是一本面向所有软件开发者的宝贵资源,无论你是初级程序员还是经验丰富的架构...
重构----改善既有代码的设计(完整中文扫描版PDF),精彩不容错过。
<重构-改善既有代码的设计--中文版>,推荐,值得一读!
### 重构速成——一份讲解重构和设计模式的好资料 #### 一、重构的重要性与目的 重构是一项重要的软件开发活动,旨在改善现有代码结构而不改变其外部行为。它可以帮助开发者提高代码质量,增强代码的可读性和可...
2. **主要功能**: - **数据归档**:将不再活跃的历史数据安全地转移到归档表或另一个数据库,以减轻生产数据库的负担。 - **表瘦身**:删除不再需要的数据,减小表的大小,提高查询性能。 - **在线操作**:在不...
重构-改善即有代码的设计.pdf,经典,经典,经典,必看
### 重构——改善既有代码的设计 #### 一、重构的概念 重构是对软件内部结构的一种调整,目的是在不改变外部行为的前提下,提高代码的可理解性和降低未来的修改成本。这一过程通常涉及对现有代码进行严谨而有序的...