设计模式

发布于 — 2019 年 10 月 14 日
#design

复杂度无法被消除, 只能被转移.

总共有23种设计模式, 它们可以分为以下三类:

  • 创建性
  • 结构性
  • 行为型 这三类又分别有以下几种模式:
  • 创建型
  1. [[Blog-Posts/coding/design/单例模式]]
  2. [[Blog-Posts/coding/design/工厂模式]]
  3. [[Blog-Posts/coding/design/建造者模式]]
  4. [[Blog-Posts/coding/design/原型模式]]
  • 结构性
  1. [[Blog-Posts/coding/design/代理模式]]
  2. [[Blog-Posts/coding/design/桥接模式]]
  3. [[Blog-Posts/coding/design/装饰器模式]]
  4. [[Blog-Posts/coding/design/门面模式]]
  5. [[Blog-Posts/coding/design/组合模式]]
  6. [[Blog-Posts/coding/design/享元模式]]
  • 行为型
  1. [[Blog-Posts/coding/design/观察者模式]]
  2. [[Blog-Posts/coding/design/模板模式]]
  3. [[Blog-Posts/coding/design/策略模式]]
  4. [[Blog-Posts/coding/design/职责链模式]]
  5. [[Blog-Posts/coding/design/状态模式]]
  6. [[Blog-Posts/coding/design/迭代器模式]]
  7. [[Blog-Posts/coding/design/访问者模式]]
  8. [[Blog-Posts/coding/design/备忘录模式]]
  9. [[Blog-Posts/coding/design/命令模式]]
  10. [[Blog-Posts/coding/design/解释器模式]]
  11. [[Blog-Posts/coding/design/中介模式]]

代理、桥接、装饰器、适配器4种设计模式的区别

这4种是比较常见的结构型设计模式, 它们的代码结构非常相似. 笼统来说, 它们都可以被称为Wrapper模式, 也就是通过Wrapper类二次封装原始类.

尽管代码结构相似, 但是这4种设计模式的用意完全不同, 也就是说要解决的问题, 应用场景.

代理模式: 代理模式在不改变原始类接口的条件下, 为原始类定义一个代理类, 主要目的是控制访问, 而为加强功能.

桥接模式: 桥接模式的目的是将接口和实现分离, 从而让它们可以较为容易、也相对独立的加以改变.

装饰器模式: 装饰器模式在不改变原始类接口的情况下, 对原始类功能进行增强, 并且支持多个装饰器的嵌套使用.

适配器模式: 适配器模式是一种事后的补救策略. 适配器提供跟原始类不同的接口, 而代理模式, 装饰器模式提供的都是跟原始类相同的接口.