一、什么是设计模式
设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。设计模式是一套被反复使用的、多数人知晓的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且提高代码的可靠性。
二、设计模式的分类
1.根据目的分类
设计模式根据目的(模式是用来做什么的)可分为创建型、结构型和行为型模式3类。
(1)创建型模式主要用于创建对象,GOF提供了5种创建型模式,分别是工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。
(2)结构型模式主要用于处理类或对象的组合,GoF提供了7种结构型模式,分别是适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
(3)行为型模式主要用于描述类或对象怎样交互和怎样分配职责,GoF提供了11种行为型模式,分别为责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。
2.根据范围分类
设计模式根据范围(即模式主要是用于处理类之间的关系还是处理对象之间的关系)可以分为类模式和对象模式两种。
(1)类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时就被确定下来,是一种静态关系。
(2)对象模式处理对象间的关系,这些关系在运行时变化,更具动态性。
三、GoF设计模式简介
范围/目的 | 创建型模式 | 结构型模式 | 行为型模式 |
类模式 | 工厂方法模式 | (类)适配器模式 | 解释器模式 模板方法模式 |
对象模式 | 抽象工厂模式 建造者模式 原型模式 单例模式 | (对象)适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 | 职责链模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 访问者模式 |
四、具体的设计模式