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

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.mrgr.cn/news/64817.html

相关文章:

  • CentOS 7 安装 ntp,自动校准系统时间
  • 1-ARM Linux驱动开发-MIO控制
  • GitHub中搜索项目方法
  • 语言模型的采样方法
  • 信息安全工程师(74)网络安全风险评估技术方法与工具
  • Day 46 || 188.买卖股票的最佳时机IV 、309.最佳买卖股票时机含冷冻期 、714.买卖股票的最佳时机含手续费
  • 数据结构初阶排序全解
  • 力扣周赛:第422场周赛
  • roberta融合模型创新中文新闻文本标题分类
  • 优青博导团队/免费指导/一站式服务/数据分析/实验设计/论文润色/组学技术服务 、表观组分析、互作组分析、遗传转化实验、单细胞检测与生物医学
  • ctfshow——web(总结持续更新)
  • 将分类标签转换为模型可以处理的数值格式
  • 计算机网络串联——打开网站的具体步骤
  • Linux 进程间通信 共享内存_消息队列_信号量
  • 提高交换网络可靠性之端口安全配置
  • windows rdp 将远程技术嵌入到你的软件——未来之窗行业应用跨平台架构
  • 第四次:2024年郑州马拉松赛事记
  • 什么是三大范式, 为什么要有三大范式, 什么场景下不用遵循三大范式
  • 《GBDT 算法的原理推导》 11-15更新决策树的叶子节点值 公式解析
  • Linux内核编程(十八)ADC驱动
  • 深入解析RSA算法:加密与安全性
  • Spring DispatcherServlet详解
  • 在vue中 什么是slot机制,如何使用以及使用场景详细讲解
  • JWT 是什么?JWT 如何防篡改?JWT 使用【hutools 工具包】
  • python爬虫之JS逆向入门,了解JS逆向的原理及用法(18)
  • 003 配置网络