七、C++设计模式

server/2025/2/11 17:22:10/

23种设计模式,以下底色的是个人认为常用的,供参考。

设计模式

释义

模板设计模式

类似C中的回调函数,主架构已经搭建完成,根据派生类不同执行不同的虚函数。

策略设计模式和状态模式很像,如果一个程序中使用了if elseif else或switch case等,如果后面还是要增加的情况下,用策略模式会比较好。
观察者模式将所有的观察者封装到一个vector或list中,当一个发生变化的时候,直接可以通知其他的对象进行变化。
装饰模式主要是通过继承方式导致派生类数量急剧上升时,应该使用装饰模式,重新设计一个类,让其他类继承此类。
桥接模式不要将不相关的东西封装到一个类里,应该分开,然后通过虚函数动态绑定,组合两个类的方式实现具体的功能。
工厂方法模式工厂模式
抽象工厂模式工厂模式
原型模式和备忘录模式很像,如果想保存对象的某些特定状态下的属性,使用此模式备忘。
builder 构建器如果一个类的构造就很复杂,则使用构造器模式,单独为类的构造进行创建类。
Singleton单例模式通过Static成员变量和Static成员函数,构造只有一个实例的模式。
flyweight享元模式创建对象池,如果要生成一个对象,先看对象池中是否存在,不存在则再创建,一般和单例模式一起使用。
Facede门面模式和中介者模式很像,中介者是系统内不同对象之间的隔离;门面模式是系统内和系统外,隔离,类似RTE的感觉。
proxy代理模式一个对象没有办法实现某些特定功能,需要代理时使用。
adapter适配器模式新老接口不适配时使用。
Mediator中介者模式和门面模式很像
State状态模式和策略模式很像
Memento备忘录设计模式和原型模式很像
Composite组合模式构成树形结构
Iterator迭代器模式构造了一种迭代器
Chain of Responsibility职责链模式将多个对象封装到List中,从根节点开始一步步的向后移动,直到找到可处理此问题的对象。
Command命令模式将行为封装成对象,并对对象进行组合等操作,实现功能组(复制,记录,撤销,重做等),类似函数对象。
Visitor访问器模式主要适用于父类本身的操作会经常变化,即今天增加一个新的操作,明天可能又增加一个新的操作。但这个父类有多少子类,是已经确定了。主要是为了防止增加新的操作,而导致的所有子类均需要修改的问题。
Interpreter解析器模式将“a+b-c+d”这样的文法,转化为真正的数学运算;再如:将“伍仟陆佰捌拾柒”这种大写的文法,转化为真正的数字等。


http://www.ppmy.cn/server/166812.html

相关文章

Cisco ISE升级

1.概述 本文旨在指导网络管理员安全、顺利地将 Cisco Identity Services Engine (ISE) 从较旧版本升级到最新的 ISE 3.x 版本。ISE 作为企业网络访问控制(NAC)和身份认证的核心组件,升级至新版本可提供更强的安全功能、性能优化以及对最新硬件和软件的支持。 本指南涵盖以…

Linux:线程的互斥与同步

一、买票的线程安全 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。 但有时候,很多变量都需要在线程间共享,这样…

音频知识基础

音频知识基础 声音属性声音度量人耳特性通道数音频数字化传输接口 声音属性 响度 响度是人耳对声音强弱的主观感受; 主要和声波的振幅相关,同时也和频率有一定关系; 音调 音调是人耳对声音高低的主观感受; 主要与频率相关&#…

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 9

第09章_子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。 SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果…

DeepSeek-R1相关论文解读

另:数学推理论文篇:DeepSeekMath 一、DeepSeek-R1-Zero和DeepSeek R1区别 都使用了RL强化学习中的GROP,但是R1还使用了SFT,进行了多阶段训练。 1. 什么是SFT? SFT是给模型一些正确例子:情况1 answer&…

【算法篇】贪心算法

目录 贪心算法 贪心算法实际应用 一,零钱找回问题 二,活动选择问题 三,分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法,是一种在每一步选择中都采取当前状态下的最优策略,期望得到全局最优…

机器学习数学基础:18.向量组及其线性组合

向量组与线性表示:案例与教程详解 一、基础概念 (一)向量组 向量组是若干同位数列向量组成的集合。比如在平面直角坐标系中,向量组 { α ⃗ 1 [ 1 0 ] , α ⃗ 2 [ 0 1 ] } \{\vec{\alpha}_1 \ \begin{bmatrix}1\\0\end{bma…

Lua限流器的3种写法

学而不思则罔,思而不学则殆 引言 上篇文章讲解了Lua脚本,事务和Pipline之间的使用方式和性能差距,本篇文章将聚焦Lua脚本,我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法&#x…