-
创建型
- 工厂 Factory Factory
- 创建对象时不暴露实例化逻辑,通过接口,创建新对象
- 动态对象创建,根据特定输入和条件动态创建
- 松耦合,客户端不直接依赖于具体的类,而是依赖抽象,接口或超类
- 典型使用场景,支付网关,数据库链接
- 创建对象时不暴露实例化逻辑,通过接口,创建新对象
- 单例 Singleton java singleton
- 确保只有一个实例
- 全保唯一的入口
- 确保资源只被创建一次
- 确保只有一个实例
- Builder
- 创建复杂对象
- Prototype
- 复制现有对象(原型)创建新对象
- 创建新对象的成本高于复制现有对象时
- 复制现有对象(原型)创建新对象
- 工厂 Factory Factory
-
结构型 Structural Patterns
- Bridge
- 将抽象和实现分离 ?
- 允许抽象和实现独立扩展 ?
- Adapter
- 允许将一个类的接口用作另外一个接口,使得原本不兼容的类可以协同工作
- 重用现有的功能而不修改原来代码
- Decorator
- 动态地向对象添加额外的职责
- 在不修改现有代码的基础上添加新的功能
- 动态组合多种行为
- 动态地向对象添加额外的职责
- Proxy
- 控制对原始对象的访问
- 请求达到原始对象之前或之后执行额外的操作
- Composite
- 将对象组合成树结构,表示部分,整体层次
- Facade
- 为子系统的一组接口提供统一的高层接口,提供简单的入口来访问复杂系统
- Flyweight 享元
- 共享尽可能多的数据来最小化内存使用并提升性能
- 减少内存使用
- Bridge
-
行为
- Strategy
- 定义一系列算法,将每个算法封装起来,并使其可互换
- Interpreter
- Command
- 将请求转换为独立的对象
- Observer
- 定义对象之间的一对多依赖关系,当一个对象改变状态时,依赖的对象会收到通知并自动更新
- 对象之间的发布 订阅关系
- 定义对象之间的一对多依赖关系,当一个对象改变状态时,依赖的对象会收到通知并自动更新
- Iterator
- 允许遍历集合元素而不暴露其底层表示
- 提供统一的方式访问集合元素
- 允许遍历集合元素而不暴露其底层表示
- Template
- Vistor
- Strategy