转载注明出处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打交道