为什么需要模式?
不想重复造轮子!
人类解决问题的思维过程是相似的:

在生活中, 如果遇到问题, 我们往往根据已有的知识、经验来找到解决问题的方案、策略.
在技术生活中, 我们也会遇到经常发生的、相似的问题, 慢慢前辈们通过反复明确问题-提出假设-检验假设的过程, 最终总结出了一些解决方案.
对于解决常见问题的这些解决方案, 称为设计模式.
常见设计模式
下图是四人帮总结的常见设计模式的关系:

设计模式分类
在面向对象的程序中通常将设计模式分为以下三类:
创建型
结构型
行为型
下面我们简单解释下每种类型:
创建型模式
与类如何构造对象有关. 乍看起来比我们平时“new一个对象”麻烦, 但是在后期维护、扩展过程中会有很大优势.
所以创建型模式对我们程序中封装对象创建的过程提供了优秀的范式.
* Builder Pattern
* Prototype Pattern
* Singleton Pattern
* Abstract Factory Pattern
结构型模式
与类的结构有关. 比如类的组成或构造方式.
* Adapter Pattern
* Bridge Pattern
* Composite Pattern
* Decorator Pattern
* Facade Pattern
* Flyweight Pattern
* Proxy Pattern
行为型模式
规定了类和对象之间的交互以及责任的委派.
* Interpreter Pattern
* Template Pattern
* Chain of Responsibility Pattern
* Command Pattern
* Iterator Pattern
* Mediator Pattern
* Memento Pattern
* Observer Pattern
* State Pattern
* Strategy Pattern
* Visitor Pattern