C++ 设计模式

C++设计模式(全23种)-CSDN博客

设计模式是在软件工程中常见的问题的解决方案,它们是经过多年实践和总结出来的一套标准化的方法。在C++中,设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。

创建型模式

创建型模式主要关注对象的创建过程,它们提供了创建对象的机制,增加了程序的灵活性和可重用性。C++中常见的创建型模式包括:

  • 工厂模式(Factory Pattern) :定义一个用于创建对象的接口,让子类决定实例化哪个类1

  • 抽象工厂模式(Abstract Factory Pattern) :提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类1

  • 单例模式(Singleton Pattern) :确保一个类只有一个实例,并提供一个全局访问点1

  • 建造者模式(Builder Pattern) :允许创建一个复杂对象的步骤一步步进行,而不同的构建者可以产生不同的结果1

  • 原型模式(Prototype Pattern) :使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象1

结构型模式

结构型模式关注如何将对象和类组织成更大的结构,同时保持结构的灵活和高效。C++中常见的结构型模式包括:

  • 适配器模式(Adapter Pattern) :允许将一个类的接口转换成客户期望的另一个接口2

  • 桥接模式(Bridge Pattern) :将抽象部分与实现部分分离,使它们可以独立变化2

  • 装饰器模式(Decorator Pattern) :动态地给一个对象添加一些额外的职责2

  • 外观模式(Facade Pattern) :提供一个统一的接口,用来访问子系统中的一群接口2

  • 享元模式(Flyweight Pattern) :运用共享技术有效地支持大量细粒度的对象2

  • 代理模式(Proxy Pattern) :为其他对象提供一种代理以控制对这个对象的访问2

行为型模式

行为型模式专注于算法和对象间职责的分配,它们定义了对象间的通信模式。C++中常见的行为型模式包括:

  • 责任链模式(Chain of Responsibility Pattern) :使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系3

  • 命令模式(Command Pattern) :将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化3

  • 解释器模式(Interpreter Pattern) :给定一个语言,定义它的文法的一种表示,并定义一个解释器3

  • 迭代器模式(Iterator Pattern) :提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示3

  • 中介者模式(Mediator Pattern) :用一个中介对象来封装一系列的对象交互3

  • 备忘录模式(Memento Pattern) :在不破坏封装的前提下,捕获并保存一个对象的内部状态3

  • 观察者模式(Observer Pattern) :定义对象间的一对多依赖,当一个对象改变状态时,所有依赖者都会收到通知3

  • 状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为3

  • 策略模式(Strategy Pattern) :定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换3

  • 模板方法模式(Template Method Pattern) :定义一个操作中的算法骨架,而将一些步骤延迟到子类中3

  • 访问者模式(Visitor Pattern) :表示一个作用于某对象结构中的各元素的操作3

设计模式在C++中的应用是多样的,它们可以帮助解决各种设计问题,同时也使得代码更加清晰、可维护和可扩展。

相关推荐
Trouvaille ~5 分钟前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
喜欢喝果茶.13 分钟前
QOverload<参数列表>::of(&函数名)信号槽
开发语言·qt
亓才孓14 分钟前
[Class类的应用]反射的理解
开发语言·python
努力学编程呀(๑•ี_เ•ี๑)14 分钟前
【在 IntelliJ IDEA 中切换项目 JDK 版本】
java·开发语言·intellij-idea
feasibility.15 分钟前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode
坚果派·白晓明16 分钟前
在鸿蒙设备上快速验证由lycium工具快速交叉编译的C/C++三方库
c语言·c++·harmonyos·鸿蒙·编程语言·openharmony·三方库
小镇敲码人23 分钟前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann
island131436 分钟前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构任务的 Stream 调度机制
开发语言·人工智能·深度学习·神经网络
坚持就完事了40 分钟前
Java中的集合
java·开发语言
BD_Marathon41 分钟前
七大设计原则介绍
设计模式