设计模式分类
设计模式根据其目的可分为创建型(Creational), 结构型(Structural)和行为型(Behavioral))三种。同时,设计模式根据范围可分为类模式和对象模式两种。
设计模式目的分类
模式 | 描述 |
---|---|
创建型模式 | 创建型模式主要用于创建对象。 |
结构型模式 | 主要用于处理类或对象的组合。 |
行为型模式 | 主要用于描述对类或对象怎样交互和怎样分配职责。 |
创建型模式
模式 | 描述 |
---|---|
单例模式 | 确保类有且只有一个对象被创建。 |
抽象工厂模式 | 允许客户创建对象的宗族,而无需指定他们的具体类。 |
建造者模式 | 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 |
工厂方法模式 | 由类决定要创建的具体类是哪一个。 |
原型模式 | 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。 |
结构型模式
模式 | 描述 |
---|---|
适配器模式 | 封装对象,并提供不同的接口。 |
桥接模式 | 将抽象部分和实现部分分离,让他们独立的变化。 |
装饰模式 | 包装一个对象,提供新的行为。 |
组合模式 | 客户用一致的方式处理对象集合和单个对象。 |
外观模式 | 简化一群类的接口。 |
享元模式 | 运用共享技术有效的支持大量细粒度的对象。 |
代理模式 | 包装对象,以控制对此对象的访问。 |
行为型模式
模式 | 描述 |
---|---|
模板方法模式 | 定义一个操作算法的总体架构,将一些步骤的实现放在子类中。 |
命令模式 | 封装请求成为对象。 |
迭代器模式 | 在对象的集合之中游走,而不是暴露集合的实现。 |
观察者模式 | 让对象能够在状态改变时被通知。 |
中介者模式 | 用一个中介对象来封装一系列的对象交互。 中介者使各个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 |
备忘录模式 | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 以后就可以将该对象恢复到保存状态。 |
解释器模式 | 介绍给定一个语言,定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。 |
状态模式 | 封装了基于状态的行为,并使用委托在行为之间的切换。 |
策略模式 | 封装可以互换的行为,并使用委托来决定要使用哪一个。 |
责任链模式 | 为了解除请求的发送者和接收者之间的耦合,使多个对象都有机会处理这个请求。 将这些处理对象连成一个链,并沿着这个链传递该请求,直到一个对象处理它。 |
访问者模式 | 一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 |
设计模式范围分类
模式 | 描述 |
---|---|
类模式 | 类模型用于处理类和子类之间的关系。 这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。 |
对象模式 | 对象模式用于处理对象间的关系。 这些关系在运行时刻变化,更具动态性。 |