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

GOF的C++软件设计模式的分类和模式名称

“GOF” 指的是 “Gang of Four”,即“四人帮”,他们是指 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。这四位作者在其著作《Design Patterns: Elements of Reusable Object-Oriented Software》中定义了23种设计模式,这些模式被广泛应用于软件开发中。根据他们解决问题的性质,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。

1. 创建型模式(Creational Patterns

创建型模式主要关注如何创建对象,目的是通过使用不同的方式来创建对象,从而增强程序的灵活性和可复用性。

  • 单例模式(Singleton):确保一个类仅有一个实例,并提供全局访问点。
  • 工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定要实例化的类。
  • 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
  • 建造者模式(Builder):使用多个简单的对象一步步构建成一个复杂的对象。
  • 原型模式(Prototype):通过复制已有的实例来创建新的对象,而不是通过类构造。

2. 结构型模式(Structural Patterns

结构型模式关注类或对象的组合,旨在通过组合现有类或对象来形成更大的结构。

  • 适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口。
  • 桥接模式(Bridge):将抽象部分与其实现部分分离,使它们可以独立变化。
  • 组合模式(Composite):将对象组合成树形结构以表示部分-整体的层次结构。
  • 装饰模式(Decorator):动态地给对象添加职责或行为。
  • 外观模式(Facade):为子系统中的一组接口提供一个统一的高层接口。
  • 享元模式(Flyweight):通过共享对象来减少内存占用,适用于大量相似对象的场景。
  • 代理模式(Proxy):通过代理对象控制对某个对象的访问,通常用于控制对象的访问或增加额外的功能。

3. 行为型模式(Behavioral Patterns

行为型模式主要关注对象之间的交互,提供了对象之间的责任分配和通信方式。

  • 责任链模式(Chain of Responsibility):将请求的发送者和接收者解耦,让多个对象都有机会处理请求。
  • 命令模式(Command):将请求封装为一个对象,从而使你可以对请求排队或记录请求日志,以及支持可撤销的操作。
  • 解释器模式(Interpreter):提供一种语言的文法的解释器,主要用于构建语言解析器。
  • 迭代器模式(Iterator):提供一种方法访问一个集合对象中的各个元素,而不暴露该对象的内部表示。
  • 中介者模式(Mediator):用一个中介对象封装一系列的对象交互,促进松耦合。
  • 备忘录模式(Memento):在不破坏封装的情况下,捕获对象的内部状态,并在适当时刻恢复。
  • 观察者模式(Observer):定义对象之间的一对多依赖关系,以便当一个对象改变状态时,所有依赖于它的对象都得到通知并自动更新。
  • 状态模式(State):允许对象在内部状态改变时改变它的行为,使状态的改变看起来像是改变了对象。
  • 策略模式(Strategy):定义一系列算法,并将每一个算法封装起来,使它们可以互换。
  • 模板方法模式(Template Method):在一个方法中定义一个算法的框架,而将一些步骤延迟到子类中。
  • 访问者模式(Visitor):表示一个作用于某种数据结构中的各元素的操作,能够在不修改数据结构的前提下定义新的操作。

关注的问题

GOF设计模式着重解决以下问题:

  • 创建问题:如何有效创建对象与控制对象的生命周期(如单例或工厂模式)。
  • 结构问题:如何更高效地组合不同的类和对象以形成复杂的结构(如组合或适配器模式)。
  • 行为问题:如何高效地处理对象之间的交互和责任分配(如观察者、命令和策略模式)。

设计模式的使用不仅可以提升代码的可读性和可维护性,还能提高代码的复用性和灵活性。理解这些模式及其应用场景将有助于设计出更高质量的软件系统。


http://www.kler.cn/a/378981.html

相关文章:

  • angular实现list列表和翻页效果
  • SpringBoot新闻稿件管理系统:架构与实现
  • Android亮屏Job的功耗优化方案
  • 批量删除redis数据【亲测可用】
  • 富格林:拆穿欺诈套路平稳出金
  • 练习LabVIEW第三十二题
  • 系统架构设计师(软考高级)一站式通关课程
  • JSON交互处理
  • 网络规划设计师-(4)数据调制与编码
  • 基于matlab的人脸识别系统设计与仿真
  • 【反射率】-- Lab 转换(excel)
  • 力扣排序242题 有效的子母异位词
  • 计算机网络:网络层 —— 多播路由选择协议
  • 【Java SE】String
  • Nginx 使用指南
  • CentOS 7 软件/程序安装示例
  • 下载pytorch报错:没有发现某个版本
  • PostgreSQL11 | PostgreSQL用户管理(上篇)
  • 构建工具-webpack和vite笔记
  • 无桥图腾柱PFC原理及MATLAB仿真
  • M3U8直播,视频切片 AES加密,多码流自适应
  • npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 中国平安蝉联福布斯“2024全球最佳雇主“,位居中国金融业第二
  • stm32cubeIde 使用笔记
  • php内置服务停止shell小工具,用来停止指定的端口的php内置服务进程
  • 2、课程大纲、学习方法