设计模式

在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类别或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。
并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其它非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

设计模式分类

设计模式主要分3大类,每一类中又有几个不同的模式

  1. 创建型模式
  2. 结构型模式
  3. 行为型模式

创建型模式

  1. 简单工厂模式
  2. 工厂方法模式
  3. 抽象工厂模式
  4. 建造者模式
  5. 单例模式

结构型模式

  1. 适配器模式
  2. 桥接模式
  3. 装饰模式
  4. 外观模式
  5. 享元模式
  6. 代理模式

行为型模式

  1. 命令模式
  2. 中介者模式
  3. 观察者模式
  4. 状态模式
  5. 策略模式