概述
设计模式时一套被反复使用、经过分类编目的、代码设计经验的总结,使用设计模式可以提高代码的可靠性、可重用性等。
目录
设计模式要素
- 模式名称
- 争对的问题
- 解决方案
- 效果
设计模式分类
按目的
- 创建型模式
- 结构型模式
- 行为型模式
按范围
即模式是用于处理类之间的关系还是对象之间的关系
- 类模式:处理类和子类的关系,关系通过继承而建立,是静态的
- 对象模式:关系在运行时建立,是动态的
在系统设计时,我们应尽量用关联关系取代继承关系。
GOF设计模式
模式类别 | 模式名称 | 模式说明 |
创建型模式 | 抽象工厂模式 | 提供了一个创建一系列相关或互相依赖对象的接口,无须指定具体类 |
建造者模式 | 将一个复杂对象的构建和表示分离,用同样的构建过程创建不同的表示 | |
工厂方法模式 | 将类的实例化操作延迟到子类中完成,由子类决定实例化哪一个类 | |
原型模式 | 通过给出一个原型对象来指定要创建的对象类型,然后复制原型来创建出更多的同类对象 | |
单例模式 | 确保系统中某一个类只有一个实例,而且自行实例化向整个系统提供该实例 | |
结构型模式 | 适配器模式 | 将一个接口转换成客户希望的另一个接口,从而实现兼容 |
桥接模式 | 将抽象部分和它的实现部分分离,让它们可以独立变化 | |
组合模式 | 通过组合多个对象形成树形结构以表示"整体-部分"的结构层次 | |
装饰模式 | 动态地给一个对象增加一些额外的职责 | |
外观模式 | 为复杂子系统提供一个统一简单的入口 | |
享元模式 | 通过共享技术有效地支持大量细粒度对象的复用 | |
代理模式 | 给某一对象提供代理,由代理者控制实际目标对象 | |
行为型模式 | 责任链模式 | 请求发送者和接收者连接成一条链,沿着链传递请求 |
命令模式 | 将请求封装为对象,使得请求调用者和请求接收者解耦 | |
解释器模式 | 描述如何为语言定义一个文法,如何表示以及解释这些句子 | |
迭代器模式 | 提供一种方法聚合对象,而不暴露对象的内部表示 | |
中介者模式 | 通过中介对象来封装一系列的对象交互,使得各个对象间不需要显式地相互引用,从而解耦 | |
备忘录模式 | 不破坏封装的前提下,捕获一个对象的内部状态,并在外部保存状态,后续可以将该对象恢复到原状态 | |
观察者模式 | 定义了对象间一种一对多依赖的关系,一个对象改变时,通知观察它的对象做出相应改变 | |
状态模式 | 允许一个对象在其内部状态改变时改变它的行为 | |
策略模式 | 定义一系列算法,并算法封装在类中,可以交互替换着给客户使用 | |
模板方法模式 | 定义一个操作中算法的股价,将其余步骤延迟到子类中去自定义 | |
访问者模式 | 表示一个作用于某对象结构中各元素的操作,使得用户在不改变各元素类的前提下定义作用于这些元素的新操作 |