当前位置: 首页 > news >正文

设计模式-创建型设计模式总结

创建型设计模式(Creational Design Patterns)是 设计模式 中的一类,专注于如何实例化对象或类。它们提供了一些优雅的方式来创建对象,允许程序在对象创建过程中更灵活地进行管理,从而提高系统的扩展性和维护性。

创建型设计模式的主要目的是解耦对象的创建与使用,从而使得系统在面对变化时更加灵活。它们通过不同的方式来控制对象的创建过程,允许客户端代码以不同的方式来实例化对象。

设计模式目标关键特点应用场景代码示例
单例模式(Singlenton Pattern)确保一个类只有一个实例,并提供全局访问- 唯一实例
- 全局访问点
适用于全局共享资源,如配置文件、日志记录等通过 __new__ 重写确保唯一实例
工厂方法模式(Factory Method Parttern)通过工厂方法创建对象,推迟对象创建到子类- 定义工厂方法
- 子类负责创建实例
适用于产品类型较多且需要多种创建方式的场景通过抽象工厂方法,子类负责具体创建不同产品
抽象工厂模式(Abstract Factory Parttern)提供一系列相关或相互依赖的对象创建接口- 多个产品族
- 客户端无需知道具体类
适用于产品族相关且需要灵活扩展的场景定义抽象工厂接口,不同子类实现不同产品族的创建
建造者模式(Builder Parttern)通过多步骤构建一个复杂的对象- 分步骤构建对象
- 与表示分离
适用于复杂对象的构建,如游戏、图形编辑器通过建造者模式逐步构建复杂对象,各个部分按需组装
原型模式(Prototype Parttern)通过克隆现有实例创建新对象- 对象复制
- 克隆现有实例
适用于对象创建开销较大的情况,如复杂对象通过 clone() 方法克隆现有对象来创建新对象

解释

  • 单例模式:当一个类的实例需要全局共享时,使用单例模式来确保在整个应用程序中只有一个实例,并且提供全局访问点。这通常用于配置管理、数据库连接、日志记录等场景。

  • 工厂方法模式:当你需要创建一个类的多个不同实例,而这些实例的创建过程具有差异时,可以使用工厂方法模式。该模式通过工厂方法延迟创建实例,子类负责具体的实例化逻辑,客户端代码不关心具体的实例化细节。

  • 抽象工厂模式:用于创建一系列相关的产品对象,每个产品族中的产品之间存在关联。适用于需要跨平台或跨操作系统创建对象的场景,例如 UI 框架中为不同平台提供不同样式的按钮、文本框等。

  • 建造者模式:当一个对象需要经过多个步骤才能创建出来,且对象的部分或外观可变时,使用建造者模式。适用于产品构建过程中有多个步骤,且每个步骤的执行顺序可能不同的场景,如复杂的游戏角色创建或复杂文档的生成。

  • 原型模式:当创建对象的过程开销较大(例如初始化复杂对象时),我们可以通过原型模式克隆现有对象,避免重复的构建过程。适用于大规模对象复制、对象缓存等场景。

http://www.lryc.cn/news/515183.html

相关文章:

  • Java-多种方法实现多线程卖票
  • 嵌入式系统开发笔记112:通过有人云测试MQTT
  • C++ Latch 和 Barrier: 新手指南
  • 【Cocos TypeScript 零基础 4.1】
  • 区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】
  • 鸿蒙应用开发搬砖经验之—使用ArkWeb要开启文档对象模型存储接口权限(DOM Storage API权限)
  • 本机实现Llama 7B推理及部署
  • Spring Boot 依赖配置分离多种打包方式
  • 华为的数字化转型框架和数字化转型成熟度评估方法
  • 图像转换 VM与其他格式互转
  • 气象白化的三种方法
  • Azkaban3.84集群安装部署
  • XIAO Esp32S3制作网络摄像头——1音频获取
  • 【Axios使用手册】如何使用axios向后端发送请求并进行数据交互
  • groupby 操作的不同参数
  • 组合模式——C++实现
  • 【开源监控工具】Uptime Kuma:几分钟设置实时监控你的网站性能
  • MATLAB画柱状图
  • stm32内部flash在线读写操作
  • SpringCloud源码分析-nacos与eureka
  • DCGAN模型详解
  • 单片机-蜂鸣器实验
  • SQL 分析函数与聚合函数的组合应用
  • 【项目】基于趋动云平台的Stable Diffusion开发
  • 游戏如何检测iOS越狱
  • 【AIGC-ChatGPT进阶提示词指令】AI美食助手的设计与实现:Lisp风格系统提示词分析
  • 库伦值自动化功耗测试工具
  • Javascript数据结构——图Graph
  • 搭建nginx文件服务器
  • Ubuntu Server安装谷歌浏览器