C++ 设计模式三大类型理解

设计模式可分为创建型、结构型和行为型三大类,它们的核心区别在于解决的问题和设计目的不同。

**一、**总结对比

| 类型 | 核心问题 | 关键点 |
| 创建型 | 如何创建对象? | 解耦实例化过程,控制创建细节。 |
| 结构型 | 如何组合对象? | 优化结构,提高复用性或灵活性。 |

行为型 如何分配对象职责? 管理交互、算法或控制流程。

通过分类理解,可以更精准地选择合适的设计模式解决特定问题。

二、创建型设计模式

核心目的 :处理对象的创建机制 ,解耦客户端代码与具体类的实例化过程,提供灵活的对象创建方式。
典型场景:需要控制对象创建细节(如数量、方式、时机)时使用。

常见模式:

  • 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。
  • 工厂方法模式(Factory Method):定义一个创建对象的接口,由子类决定实例化哪个类。
  • 抽象工厂模式(Abstract Factory):创建相关或依赖对象的家族,无需指定具体类。
  • 建造者模式(Builder):分步骤构建复杂对象,分离构造与表示。
  • 原型模式(Prototype):通过复制现有对象创建新对象,避免重复初始化。

三、结构型设计模式

核心目的 :通过组合类或对象形成更复杂的结构 ,优化类或对象的组织方式,提高灵活性或复用性。
典型场景 :需要简化系统设计、整合不同接口或扩展功能时使用。
常见模式:

  • 适配器模式(Adapter):将不兼容的接口转换为可兼容的接口。
  • 装饰器模式(Decorator):动态添加职责到对象,无需子类化。
  • 代理模式(Proxy):为对象提供代理以控制访问(如懒加载、权限控制)。
  • 组合模式(Composite):将对象组合成树形结构,统一处理单个对象和组合对象。
  • 外观模式(Facade):简化复杂子系统的接口,提供高层访问入口。
  • 桥接模式(Bridge):分离抽象与实现,使两者可独立变化。
  • 享元模式(Flyweight):共享大量细粒度对象,减少内存占用。

四、行为型设计模式

核心目的 :管理对象间的交互与职责分配 ,优化算法、通信或控制流程。
典型场景 :需要协调多个对象的行为、解耦发送者与接收者或动态改变行为时使用。
常见模式:

  • 策略模式(Strategy):定义算法族并封装,使其可互换。
  • 观察者模式(Observer):定义对象间的一对多依赖,状态变化时自动通知。
  • 命令模式(Command):将请求封装为对象,支持参数化、队列和日志。
  • 状态模式(State):允许对象在内部状态改变时改变行为。
  • 责任链模式(Chain of Responsibility):将请求沿处理链传递,直到有对象处理。
  • 模板方法模式(Template Method):定义算法骨架,子类实现某些步骤。
  • 访问者模式(Visitor):将操作与对象结构分离,便于新增操作。
  • 中介者模式(Mediator):减少对象间直接通信,通过中介者协调。
  • 备忘录模式(Memento):捕获并外部化对象状态,以便后续恢复。
  • 迭代器模式(Iterator):提供顺序访问聚合对象元素的方法,无需暴露内部结构。
相关推荐
La Pulga1 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd1 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白2 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李3 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议
Zhao-Jichao5 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
Z21-X6 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
坤坤子吖6 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
Rabitebla6 小时前
【Linux学习笔记】进程篇(九):进程的创建与退出——fork、写时拷贝与退出码
linux·c++·笔记·学习
智者知已应修善业6 小时前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
欢欢李9 小时前
【LTE L3 笔记 06】LTE下行参考信号
笔记·无线通信·物理层·lte·空口协议