1995 年, ErichGamma、Richard Helm、Ralph Johnson、John Vlissides等 4 位作者合作出版了《Design Patterns: Elements of Reusable Object-Oriented Software》一书,在本教程中收录了 23 个设计模式,被软件开发人员奉为设计圣典,一直沿用至今。
设计模式有两种分类方法,根据模式的目的和根据模式的作用范围来划分。
1、 根据模式的目的划分
根据模式的目的,即根据模式是用来做什么的,可以将设计模式划分为创建型模式、结构型模式和行为型模式三种。
模式类别 | 功能 | 模式 |
---|---|---|
创建型 | 类或对象的创建 | 单例、原型、工厂方法、抽象工厂、建造者 |
结构型 | 类或对象的组合 | 代理、适配器、桥接、装饰、外观、享元、组合 |
行为型 | 类或对象的协同 | 模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器 |
2、 根据模式的作用范围划分
根据模式的作用范围,即根据模式是作用在类上还是作用在对象上,可以将设计模式划分为类模式和对象模式两种
类模式 | 功能 | 模式 |
---|---|---|
类模式 | 处理类与子类之间的关系 | 工厂方法、(类)适配器、模板方法、解释器 |
对象模式 | 处理对象之间的关系 | 单例、原型、抽象工厂、建造者、代理、(对象)适配器、桥接、装饰、外观、享元、组合、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录 |