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++中的应用是多样的,它们可以帮助解决各种设计问题,同时也使得代码更加清晰、可维护和可扩展。

相关推荐
杜子不疼.4 分钟前
【C++】玩转模板:进阶之路
java·开发语言·c++
夜晚中的人海14 分钟前
【C++】异常介绍
android·java·c++
m0_5522008217 分钟前
《UE5_C++多人TPS完整教程》学习笔记60 ——《P61 开火蒙太奇(Fire Montage)》
c++·游戏·ue5
charlie11451419129 分钟前
精读C++20设计模式——行为型设计模式:迭代器模式
c++·学习·设计模式·迭代器模式·c++20
小欣加油1 小时前
leetcode 1863 找出所有子集的异或总和再求和
c++·算法·leetcode·职场和发展·深度优先
拾忆,想起1 小时前
AMQP协议深度解析:消息队列背后的通信魔法
java·开发语言·spring boot·后端·spring cloud
林烈涛2 小时前
js判断变量是数组还是对象
开发语言·前端·javascript
可可南木2 小时前
ICT 数字测试原理 3 --SAFETYGUARD 文件
开发语言·测试工具·pcb工艺
00后程序员张2 小时前
从零构建 gRPC 跨语言通信:C++ 服务端与
开发语言·c++
Komorebi_99993 小时前
Unocss
开发语言·前端