常见的设计模式

设计模式是面向对象的精髓所在

Posted by 雯饰太一 on May 28, 2023

C++ 中常见的设计模式有以下几种:

  1. 创建型模式(Creational Patterns):
    • 单例模式(Singleton Pattern)
    • 工厂模式(Factory Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)
  2. 结构型模式(Structural Patterns):
    • 适配器模式(Adapter Pattern)
    • 桥接模式(Bridge Pattern)
    • 组合模式(Composite Pattern)
    • 装饰器模式(Decorator Pattern)
    • 外观模式(Facade Pattern)
    • 享元模式(Flyweight Pattern)
    • 代理模式(Proxy Pattern)
  3. 行为型模式(Behavioral Patterns):
    • 模板方法模式(Template Method Pattern)
    • 命令模式(Command Pattern)
    • 迭代器模式(Iterator Pattern)
    • 观察者模式(Observer Pattern)
    • 中介者模式(Mediator Pattern)
    • 备忘录模式(Memento Pattern)
    • 解释器模式(Interpreter Pattern)
    • 状态模式(State Pattern)
    • 策略模式(Strategy Pattern)
    • 职责链模式(Chain of Responsibility Pattern)
    • 访问者模式(Visitor Pattern)

以下是常见的 C++ 设计模式以表格形式展示,每个设计模式附带简要描述:

设计模式 描述
单例模式 (Singleton) 确保一个类只有一个实例,并提供全局访问点。
工厂模式 (Factory) 定义一个创建对象的接口,由子类决定实例化哪个类。
抽象工厂模式 (Abstract Factory) 提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。
建造者模式 (Builder) 将一个复杂对象的构建过程与其表示分离,以便相同的构建过程可以创建不同的表示。
原型模式 (Prototype) 使用原型实例指定要创建对象的种类,并通过复制这些原型创建新的对象。
适配器模式 (Adapter) 将一个类的接口转换成客户端所期望的另一个接口。
桥接模式 (Bridge) 将抽象部分和实现部分分离,使它们可以独立地变化。
组合模式 (Composite) 将对象组合成树状结构以表示部分-整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
装饰器模式 (Decorator) 动态地给一个对象添加一些额外的职责,同时又不改变其接口。
外观模式 (Facade) 为子系统中的一组接口提供一个统一的接口,使其更加易于使用。
享元模式 (Flyweight) 使用共享对象来有效地支持大量细粒度的对象。
代理模式 (Proxy) 为其他对象提供一个代理以控制对这个对象的访问。
模板方法模式 (Template Method) 定义一个算法的骨架,将一些步骤的实现延迟到子类中。
命令模式 (Command) 将请求封装成一个对象,从而允许使用不同的请求、队列或日志请求参数化客户端,并支持可撤销操作。
迭代器模式 (Iterator) 提供一种方法来顺序访问聚合对象中的各个元素,而又不暴露其内部表示。
观察者模式 (Observer) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。
中介者模式 (Mediator) 通过一个中介对象来封装一系列对象之间的交互,使得各个对象之间不需要显式地相互引用。
备忘录模式 (Memento) 在不破坏封装性的前提下,捕获并存储一个对象的内部状态,以便后续可以恢复到该状态。
解释器模式 (Interpreter) 给定一个语言,定义它的文法的一种表示,并定义一个解释器,用于解释该语言中的句子。
状态模式 (State) 允许对象在其内部状态发生改变时改变它的行为。
策略模式 (Strategy) 定义一系列算法,将每个算法封装起来,并使它们可以互换。
职责链模式 (Chain of Responsibility) 为解除发送者和接收者之间的耦合,而使多个对象都有机会处理请求,将这些对象连成一条链,并沿着链传递请求,直到有一个对象处理它为止。
访问者模式 (Visitor) 封装某些作用于某种数据结构中的各个元素的操作,使得可以在不改变数据结构的前提下定义作用于这些元素的新操作。

以上列出的是常见的设计模式,每个模式都有其特定的用途和适用场景。设计模式提供了一种经过验证的面向对象设计思路,可以帮助解决各种软件设计问题,并提供可维护、灵活和可扩展的代码结构。在实际开发中,根据需求选择合适的设计模式可以提高代码的可读性和可维护性,同时促进软件系统的可扩展性和重用性。