架构师 0 期 | 面向对象的设计模式

设计模式的作用
使用设计模式的好处:运用各种设计原则,可以写出强内聚,低耦合的程序。
写出好用的框架,让开发人员依赖你的框架,按照你设计的规范开发。使程序变得可控,优美。
设计模式的定义
每种模式都是一种问题的通用解决方案。
设计模式是一种可重复使用的解决方案。
所以理论上不止23种,可能有几百上万种。
设计模式划分
按功能分
- 创建模式 
- 对类的实例化过程的抽象。 
- 结构模式 
- 将类或者对象结合在一起形成更大的结构。 
- 行为模式 
- 对在不同的对象之间划分责任和算法的抽象化。 
按方式分
- 类模式 
- 以继承的方式实现的,静态的。 
- 对象模式 
- 以组合的方式实现的,动态的。 
设计模式举例
工厂模式
单例模式
- 保证产生单一实例,一个类就产生一个实例。 
- 提高性能,实现特殊功能方便控制。 
适配器模式(Adapter)
- 需要使用一个类,但是这个类不太满足需求。需要拓展一下方法。 
- 如图: 

模板方式模式
- 是拓展功能最基本模式之一,是类的行为模式(种类一) 
- 通过继承的方法实现扩展, 
- 基类负责算法的轮廓和骨架 
- 子类负责算法的具体实现 
- 继承的方式更容易实现,相对于组合方式 
模板方法的形式
- 抽象方法 
- 强制子类实现(规定步骤,模板) 
- protected abstract void step1(); 
- 具体方法 
- 可选方法(子类选择实现) 
- 如果明确不需要覆盖的话,使用关键字final 
- protected void doSomething() {...} 
- 钩子方法 
- 空实现(缺省适配器模式),父类已经做了空实现 
- 子类可选择覆盖,做子类想做的特殊事情。 
- protected void setup() {} 
何时使用?
系统重构时:
- 多if、else 或 switch 换成多态(使用模板方法) 
- 打方法打碎,变成多个可以拓展的步骤 
策略模式(Strategy)
- 策略模式是拓展功能的最基本模式,是对象的行为模式(种类二) 
- 通过组合的方式实现拓展的 
何时使用?
- 需要再多种算法中选择一种时 
- 系统重构时,将多if、else 或 switch 换成多态(使用策略模式) 
对比(和模板方法)
- 策略对象可以自由组合 
- 将使用策略的人和策略的具体实现分离 
版权声明: 本文为 InfoQ 作者【刁架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/b57a93237b1c02d07a082b340】。文章转载请联系作者。
 
  
  
  
  
  
  
  
  
  
    
评论