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

发布于: 2020 年 06 月 24 日
架构师 0 期 | 面向对象的设计模式

设计模式的作用

使用设计模式的好处:运用各种设计原则,可以写出强内聚,低耦合的程序。

写出好用的框架,让开发人员依赖你的框架,按照你设计的规范开发。使程序变得可控,优美。

设计模式的定义

每种模式都是一种问题的通用解决方案

设计模式是一种可重复使用的解决方案。

所以理论上不止23种,可能有几百上万种。

设计模式划分

按功能分

  1. 创建模式

  2. 对类的实例化过程的抽象。

  3. 结构模式

  4. 将类或者对象结合在一起形成更大的结构。

  5. 行为模式

  6. 对在不同的对象之间划分责任和算法的抽象化。

按方式分

  1. 类模式

  2. 以继承的方式实现的,静态的。

  3. 对象模式

  4. 以组合的方式实现的,动态的。

设计模式举例

工厂模式

单例模式

  1. 保证产生单一实例,一个类就产生一个实例。

  2. 提高性能,实现特殊功能方便控制。

适配器模式(Adapter)

  1. 需要使用一个类,但是这个类不太满足需求。需要拓展一下方法。

  2. 如图:

模板方式模式

  1. 是拓展功能最基本模式之一,是类的行为模式(种类一)

  2. 通过继承的方法实现扩展,

  3. 基类负责算法的轮廓和骨架

  4. 子类负责算法的具体实现

  5. 继承的方式更容易实现,相对于组合方式

模板方法的形式

  1. 抽象方法

  2. 强制子类实现(规定步骤,模板)

  3. protected abstract void step1();

  4. 具体方法

  5. 可选方法(子类选择实现)

  6. 如果明确不需要覆盖的话,使用关键字final

  7. protected void doSomething() {...}

  8. 钩子方法

  9. 空实现(缺省适配器模式),父类已经做了空实现

  10. 子类可选择覆盖,做子类想做的特殊事情。

  11. protected void setup() {}

何时使用?

系统重构时:

  1. 多if、else 或 switch 换成多态(使用模板方法)

  2. 打方法打碎,变成多个可以拓展的步骤

策略模式(Strategy)

  1. 策略模式是拓展功能的最基本模式,是对象的行为模式(种类二)

  2. 通过组合的方式实现拓展的

何时使用?

  1. 需要再多种算法中选择一种时

  2. 系统重构时,将多if、else 或 switch 换成多态(使用策略模式)

对比(和模板方法)

  1. 策略对象可以自由组合

  2. 将使用策略的人和策略的具体实现分离

发布于: 2020 年 06 月 24 日 阅读数: 12
用户头像

diaojz

关注

叫我刁架构 2017.10.25 加入

预备备网红首席架构师,边缘设计支持者。

评论

发布
暂无评论
架构师 0 期 | 面向对象的设计模式