设计模式23种
创建型
对象的创建。5
| 创建型 | 定义 | 可变部分(允许独立变化,而又不会导致重新设计) | 
|---|---|---|
| 工厂方法 Factory Method | 定义创建对象的接口,让子类决定实例化 | 被实例化的子类 | 
| 抽象工厂 Abstract Factory | 提供创建一系列相关或依赖对象的接口,无需指定具体类 | 产品对象家族 | 
| 原型 Prototype | 拷贝原型,创建新对象 | 被实例化的类 | 
| 单例 Singleton | 一个类仅有一个实例 | 一个类的唯一实例 | 
| 建造者 Builder | 复杂对象的构建与表示分离,构建过程创建不同的表示 | 如何创建一个组合对象 | 
结构型
处理类或对象的组合。7
| 结构型 | 定义 | 可变部分 | 
|---|---|---|
| 适配器 Adapter | 类的接口转换,不兼容的类可以一起工作 | 对象的接口 | 
| 桥接 Bridge | 类的抽象与实现分离,都可以独立地变化 | 对象的实现 | 
| 组合 Composite | 对象组合成树形结构,使用具有一致性 | 一个对象的结构和组成 | 
| 装饰者 Decorator | 动态添加额外的职责,扩展功能更灵活 | 对象的职责,不生成子类 | 
| 外观 Facade | 一组接口提供一个高层接口,使子系统更加容易使用 | 一个子系统的接口 | 
| 享元 Flyweight | 共享支持细粒度对象 | 对象的存储开销 | 
| 代理 Proxy | 其他对象代理控制这个对象的访问 | 如何访问一个对象;该对象的位置 | 
行为型
对象间的通信。11
| 行为型 | 定义 | 可变部分 | 
|---|---|---|
| 解释器 Interpreter | 给定语言,定义文法表示和解释器,解释句子 | 一个语言的文法及解释 | 
| 模板方法 Template Method | 定义操作的骨架,将一些步骤延迟到子类中 | 算法中的某些步骤 | 
| 职责链 Chain of Responsibility | 为解除耦合,使多个对象都有机会处理这个请求 | 满足一个请求的对象 | 
| 命令 Command | 请求封装为对象,参数化请求,可取消操作 | 何时、怎样满足一个请求 | 
| 迭代器 Iterator | 顺序访问聚合对象 | 如何遍历各元素 | 
| 中介者 Mediator | 中介对象封装对象交互 | 对象间交互 | 
| 备忘录 Memento | 捕获对象的内部状态并保存,可将对象恢复 | 哪些私有信息,何时存储 | 
| 观察者 Observer | 一个对象的状态发生改变,所有依赖对象都得到通知并刷新 | 多个对象依赖于另外一个对象,如何保持一致 | 
| 状态 State | 对象内部状态改变时改变它的行为 | 对象的状态 | 
| 策略 Strategy | 一系列的算法,可替换 | 算法 | 
| 访问者 Visitor | 不改变各类的前提下定义新操作 | 某些可作用于一个/组对象的操作,但不修改这些对象的类 | 
UML类图

其中,
| 关系 | 说明 | 备注 | 
|---|---|---|
| 依赖 ----> | 临时性的关联,最弱 | 常用于 局部变量、函数参数、返回值等 | 
| 关联 \(\longrightarrow\) | 引用关系 | 单向/双向,常用于 类的属性表达 | 
| 聚合 | 整体 contains 局部 | 常用于 构造、Setter或业务方法,可单独存在 | 
| 组合 | 整体 has 局部 | 在整体构造方法中实例化,同生命周期 | 
| 多重性 | 通常在关联、聚合、组合中使用 | N...N(*) | 

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号