一次运用设计模式对现有系统进行重构的尝试(二)
2008-11-03 10:01
323 查看
关于这次尝试的实践在上次发文后(/article/7081679.html),得到了几位朋友(木野狐(Neil Chen) 、T2噬菌体等)的指点,在这里再次感谢你们的热心帮助。
[b] [b] [b]思考
[/b][/b][/b] 上次对于不同的产品入库用简单工厂模式重构后,就象朋友们所说,这个设计确实很不灵活:如果有新的产品(如原材料)入库作业,那么需要修改的地方太多了:工厂类,具体类...实际上违背了面向对象的设计原则:开放封闭原则。
经过学习思考后,认识到:这里的设计实际上还违背了依赖倒置原则:依赖于抽象,而不要依赖于具体实现。而简单工厂模式就存在这个弊端。
为了解决这个问题,我对此设计进行了再次重构:工厂方法模式
运用工厂方法模式再次重构
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="CellFactory" value ="CellFactory"/>
<add key ="ModFactory" value ="MODFactory"/>
</appSettings>
</configuration>
我想利用反射来完成的话,客户端对具体的工厂操作也被抽到Config文档中配置完成,这样在以后的维护中会更加灵活。比如,如果具体工厂名称有变化,只要改动Config文档即可,Client端无需更改。
[b] [b] [b]思考
[/b][/b][/b] 上次对于不同的产品入库用简单工厂模式重构后,就象朋友们所说,这个设计确实很不灵活:如果有新的产品(如原材料)入库作业,那么需要修改的地方太多了:工厂类,具体类...实际上违背了面向对象的设计原则:开放封闭原则。
经过学习思考后,认识到:这里的设计实际上还违背了依赖倒置原则:依赖于抽象,而不要依赖于具体实现。而简单工厂模式就存在这个弊端。
为了解决这个问题,我对此设计进行了再次重构:工厂方法模式
运用工厂方法模式再次重构
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="CellFactory" value ="CellFactory"/>
<add key ="ModFactory" value ="MODFactory"/>
</appSettings>
</configuration>
我想利用反射来完成的话,客户端对具体的工厂操作也被抽到Config文档中配置完成,这样在以后的维护中会更加灵活。比如,如果具体工厂名称有变化,只要改动Config文档即可,Client端无需更改。
相关文章推荐
- 一次运用设计模式对现有系统进行重构的尝试(一)
- 一次重构导向设计模式的实践
- 设计模式 -- 组合模式的一次运用实践
- 最近重构一个通讯系统 想了一个很有趣的设计模式,我就叫——移花接木
- 游戏项目中运用到的设计模式(二)...策略模式(strategy)(《重构-改善既有代码的设计》读后做)
- [设计模式]记一次开源库的重构历程
- 工作流系统之三十二 设计模式在工作流系统开发中的运用
- 【机房重构】——设计模式的运用
- Android系统设计中存在设计模式分析
- Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用
- tdd,设计模式,重构在软件开发中的概念和角色辨析
- 系统架构技能之设计模式-组合模式
- 如何进行电子邮件营销系统的设计
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理
- Android歌词秀设计思路(6)运用Proxy设计模式简化歌词播放服务的使用
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理
- 游戏系统设计开发之观察者模式
- Tomcat学习2_Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
- 设计模式中的单例模式的代码为什么析构函数会多次被调用,而构造函数只调用一次?
- Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析