1、创建性模式
|-------------------------|-------------------------------------------------------|----------|
| 设计模式名称 | 简要说明 | 速记关键字 |
| Factory Method 工厂方法模式 | 定义了创建对象的接口,它允许子类决定实例化哪个类 | 动态生产对象 |
| Abstract Factory 抽象工厂模式 | 提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类 | 生产成系列对象 |
| Builder 构建器模式 | 将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示 | 复杂对象构造 |
| Prototype 原型模式 | 允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。通过拷贝原型对象来创建新的对象 | 克隆对象 |
| Singleton 单例模式 | 确保一个类只有一个实例,并且提供了对该类的全局访问入口 | 单实例 |
2、结构性模式
|----------------|----------------------------------------------------------|--------|
| 设计模式名称 | 简要说明 | 速记关键字 |
| Adapter 适配器模式 | 将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作 | 转换接口 |
| Bridge 桥接模式 | 将一个复杂的组件分成两个独立但又相关的继承层次结构 将类的抽象部分和实现部分分离开,使它们可以独立地变化 | 继承树拆分 |
| Composite 组合模式 | 创建树型层次结构来改变复杂性,同时允许结构中的每一个元素操作同一个接口。用于表示"整体-部分"的层次结构 | 树形目录结构 |
| Decorator 装饰模式 | 在不修改对象外观和功能的情况下添加或者删除对象功能 即动态地给一个对象添加一些额外的职责 | 动态附加职责 |
| Facade 外观模式 | 子系统中的一组接口提供了一个统一的接口 | 对外统一接口 |
| Flyweight 享元模式 | 可以通过共享对象减少系统中低等级的、详细的对象数目 提供支持大量细粒度对象共享的有效方法 | 汉字编码 |
| Proxy 代理模式 | 为控制对初始对象的访问提供了一个代理或者占位符对象 | 快捷方式 |
3、行为性模式
|-------------------------------|--------------------------------------------------|----------|
| 设计模式名称 | 简要说明 | 速记关键字 |
| Chain of Responsibility 职责链模式 | 可以在系统中建立一个链,这样消息可以在首先接收到它的级别处被处理,或者可以定位到可以处理它的对象 | 传递职责 |
| Command 命令模式 | 在对象中封装了请求,这样就可以保存命令,将该命令传递给方法以及像任何其他对象一样返回该命令 | 日志记录,可撤销 |
| Interpreter 解释器模式 | 可以解释定义其语法表示的语言,还提供了用表示来解释语言中的语句的解释器 | 虚拟机的机制 |
| Iterator 迭代器模式 | 为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合,并与之相分离的 | 数据集 |
| Mediator 中介者模式 | 通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信 | 不直接引用 |
|------------------------|-----------------------------------------------------------|-----------|
| 设计模式名称 | 简要说明 | 速记关键字 |
| Memento 备忘录模式 | 保持对象状态的"快照 "(snapshot),这样对象可以在不向外 界公开其内容的情况下返回到它的最初状态 | 游戏存档 |
| Ohserver 观察者模式 | 为组件向相关接收方广播消息提供了灵活的方法 定义对象间的一种一对多的依赖关系 | 订阅、广播、联动 |
| State 状态模式 | 允许一个对象在其内部状态改变时改变它的行为 | 状态变成类 |
| Strategy 策略模式 | 定义一系列算法,把它们一个个封装起来,并且使它们之间 可互相替换,从而让算法可以独立于使用它的用户而变化 | 多方案切换 |
| Template Method 模板方法模式 | 提供了在不重写方法的前提下允许子类部分重载方法的方法 | 框架 |
| Visitor 访问者模式 | 提供了一种方便的、可维护的方法来表示在对象结构元素上 要进行的操作 | 数据与操作分离 |