跳转至

设计模式简介

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

什么是 GOF(四人帮,全拼 Gang of Four)?

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。

四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。

  • 对接口编程而不是对实现编程。
  • 优先使用对象组合而不是继承。

设计模式的类型

创建型模式

  1. 工程模式
  2. 抽象工厂模式
  3. 单例模式
  4. 建造者模式
  5. 原型模式

结构型模式

  1. 适配器模式
  2. 桥接模式
  3. 过滤器模式
  4. 组合模式
  5. 装饰器模式
  6. 外观模式
  7. 享元模式
  8. 代理模式

行为模式

  1. 责任链模式
  2. 命令模式
  3. 解释器模式
  4. 迭代模式
  5. 中介者模式
  6. 备忘录模式
  7. 观察者模式
  8. 状态模式
  9. 空对象模式
  10. 策略模式
  11. 模板模式
  12. 访问者模式

img

设计模式 7 大原则

  1. 单一职责(Single Responsibility Principle)
  2. 开闭原则(Open-Closed Principle)
  3. 里氏替换原则(Liskov Substitution Principle)
  4. 依赖倒转原则(Dependence Inversion Principle)
  5. 接口隔离原则(Interface Segregation Principle)
  6. 迪米特法则(Law Of Demeter)
  7. 组合/聚合复用原则(Composite/Aggregate Reuse Principle)

1. 单一职责

一个类应该只负责一项职责

2. 开闭原则

开闭原则表示软件实体(类、模块、函数等)应该是可被扩展的,但是不可被修改。

3. 里氏替换原则

里氏替换原则的重点在不影响原功能,而**不是覆盖原方法**。

4. 依赖倒转原则

依赖倒转原则的核心就是**面向接口编程**

5. 接口隔离原则

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

img

6. 迪米特法则

迪米特法则的核心是降低类之间的耦合;

但是要注意:由于每个类都减少了不必要的一栏,因此迪米特法则只是要求降低类之间(对象)耦合关系,并不是要求完全没有依赖。

7. 聚合、组合

原则是尽量使用合成、聚合的方式,而不是继承

设计原则核心思想

  1. 找出可能需要变化之处,把它独立出来,不要和那些不需要变化的代码混在一起。
  2. 针对接口编程,而不是针对实现编程。
  3. 为了交互对象之间的松耦合设计而努力。