码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式的一些理解

时间:2015-06-17 20:04:31      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:设计模式

转载注明出处http://blog.csdn.net/wanghorse


1. 把变化的部分都用组合、聚合或依赖实现,不变的部分用继承实现

     Visitor模式, 将经常删减的操作中继承体系中提炼出来,成为操作类,每个类中的操作对应原有的不变的继承体系
     Strategy模式,将可扩充的算法使用依赖实现;接口抽闲出来
     Observer模式,将观察者放在被观察者的依赖列表中;不变的update部分使用继承实现,各个观察者各自实现update接口
     Interpreter模式,将可变的解释算法使用依赖来应用,不变的算法接口使用继承实现
     Command模式,将可变的Command类型用依赖实现,不变的Command接口用继承实现

2. 提炼公共的部分
     比如模板方法,将公共的流程在父类中体现,具体各步骤在子类中实现
     State模式,将公共的接口提炼出来
     Memento模式,针对每个对象类,都有一个对应的记忆类,每个类实现各自的记忆类;再有统一的算法和管理器进行管理
     Mediator模式,由他统一调度所有的下面的接口,接口由中介类封装
     Iterator模式,将遍历接口和算法抽象出来
     Fyiweight模式,将公共的部分放在基类中
     Composite模式,将组合和递归在基类中实现
     Singleton模式,将判断唯一放在static中实现

3. 在运行中可变
     如State模式,相比原有的switch/case以数组map模式,此模式能够在运行时进行变更
     如Strategy模式,通过依赖,可在运行中变更策略
     decorator模式,在运行中决定新增功能(相对Proxy模式),通过继承来扩展不同的装饰

4. 解耦
     Mediator模式,各个子模块之间无交互了, 多对多变成了1对多的模式; CC中的Task有中介者的意思
     Observer和Subject解耦, 即Subject无需关心Observer是如何实现的,是再做什么
     Iterator模式,将接口和遍历算法解耦
     Command模式,将调用者和接收者解耦
     Responsibility chain模式,将每一个执行的对象解耦,不需要关注最终的执行效果
     Bridge模式,将接口扩展和实现扩展解耦;实现从其接口中解耦出来

5. 少改动进行扩充
     Proxy模式, 接口保持不变,不变更原有类的情况下, 在原有的基础上,扩充新的功能
     Adapter模式, 将现有系统和第三方系统很好的整合在一起,现有系统没做改动,第三方系统也没做改动

6. 降低使用难度
     Facade模式,将多个对象的接口在一个对象中封装好,并提供出去,即调用者只和一个对象打交道
     Mediator模式,将多个对象的交互在一个对象中管理,调用者只需要和Mediator打交道

设计模式的一些理解

标签:设计模式

原文地址:http://blog.csdn.net/wanghorse/article/details/46537269

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!