工厂方法模式
- 目标
- 参与者
- 结构
- 两套体系
- 一套是被使用对象
- 一套是使用者(未必是真正的使用者,既Factory,自己不用暴露给外面使用)
- 使用者需要在接口或者父类把 新建被使用者的方法(newXXX) 抽象,让自己去new
- 类似于模板方法模式 搞个抽象方法让自类去新建对象
- 类图:
- 场景
- 一个流程/工厂等只需要产出一个对象(都实现了同一接口或者父类)
- 其实可以理解早期需要使用模板方法的应用场景
- 晚期可以因为多处逻辑有变动,会导致父类需要多个接口,如果有多个new实例的方法就变成抽象工厂模式了.
抽象工厂模式
- 目标
- 给每个使用者创建一套对象
- 这个典型的创造一套对象的设计模式
- 参与者
- 结构
- 产品(包括其具体子类)多套
- 使用者一套
- 类图
- 场景
- 我一个流程中有多个可能变化的,那么把变化的抽象出去,然后定义几个抽象方法
- 具体的使用者需要多种产品,然后具体的产品由子类去构造
生成器模式
- 目标
- 给客户端创建一个复杂对象,其中创建过程可复用,生成不同对象主要利用不同的生成器返回不同的零件
- 主要分为两类,创建过程复用和创建过程不复用
- 这个典型的创建过程太过复杂,为了使创建过程更加清晰明了以及复用创建过程的设计模式
- 参与者
- 一个构造参数超多的类
- 一堆构建者
- 一个创建过程类(主管类),如果有多个创建流程,可以创建多个方法
- 结构
- 类图
- 场景
- 主要针对的是复杂对象/流程逻辑的创建
- 例如使用了桥接模式的对象的创建
- 例如有很多参数的对象的创建
原型模式
- 目标
使你能够复制已有对象, 而又无需使代码依赖它们所属的类。
- 参与者
- 一个克隆接口
- 需要能复制的类,都去实现接口,方便客户端获得克隆对象
- 结构
- 场景
- 如果你需要复制一些对象, 同时又希望代码独立于这些对象所属的具体类, 可以使用原型模式。
- 可以配合组合模式和装饰模式,来克隆复杂的对象
- 基本不用
单例模式
- 目标
要求创建一个保证类只有一个实例, 并提供一个访问该实例的全局节点.
- 参与者
- 结构
- 场景
- 全局只需要为一个实例的所有场景
- 大对象,珍贵资源,稀缺资源等
- 外观模式就只需要一个实例
- 享元模式中也需要一个不见的实例
posted @
2022-06-02 15:28
躲在墙角的
阅读(
13)
评论()
编辑
收藏
举报