创建型设计模式
工厂方法模式
- 目标
- 给每个使用者创建一个适合他们的对象
- 参与者
- 两套继承体系
- 结构
- 场景
- 一个流程/工厂等只需要产出一个对象(都实现了同一接口或者父类)
- 其实可以理解早期需要使用模板方法的应用场景
- 晚期可以因为多处逻辑有变动,会导致父类需要多个接口,如果有多个new实例的方法就变成抽象工厂模式了.
抽象工厂模式
- 目标
- 给每个使用者创建一套对象
- 这个典型的创造一套对象的设计模式
- 参与者
- 产品体系多套+使用者继承/实现体系一套
- 结构
- 场景
- 我一个流程中有多个可能变化的,那么把变化的抽象出去,然后定义几个抽象方法
- 具体的使用者需要多种产品,然后具体的产品由子类去构造
生成器模式
- 目标
- 给客户端创建一个复杂对象,其中创建过程可复用,生成不同对象主要利用不同的生成器返回不同的零件
- 主要分为两类,创建过程复用和创建过程不复用
- 这个典型的创建过程太过复杂,为了使创建过程更加清晰明了以及复用创建过程的设计模式
- 参与者
- 一个构造参数超多的类
- 一堆构建者
- 一个创建过程类(主管类),如果有多个创建流程,可以创建多个方法
- 可有可无,主要看创建过程是否需要复用
- 结构
- 场景
- 主要针对的是复杂对象/流程逻辑的创建
- 例如使用了桥接模式的对象的创建
- 例如有很多参数的对象的创建
原型模式
- 目标
使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 - 参与者
- 一个克隆接口
- 需要能复制的类,都去实现接口,方便客户端获得克隆对象
- 结构
- 场景
- 如果你需要复制一些对象, 同时又希望代码独立于这些对象所属的具体类, 可以使用原型模式。
- 可以配合组合模式和装饰模式,来克隆复杂的对象
- 基本不用
单例模式
- 目标
要求创建一个保证类只有一个实例, 并提供一个访问该实例的全局节点. - 参与者
- 一个类
- 结构
- 一个类,提供一个静态的获取实例的方法
- 场景
- 全局只需要为一个实例的所有场景
- 大对象,珍贵资源,稀缺资源等
- 外观模式就只需要一个实例
- 享元模式中也需要一个不见的实例
作者:cgengwei
出处:https://www.cnblogs.com/cgengwei/p/16337906.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用