C++设计模式
文章平均质量分 66
QQ853298070
这个作者很懒,什么都没留下…
展开
-
设计模式(11):C++桥接模式
一 作用 将抽象部份与它的实现部份分离,使它们都可以独立地变化。将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。 二 UML类图 三 举个栗子 #pragma once #include <iostream> class AbstractionImplement { public: virtual ~AbstractionImplement() = default; virtual void operatio转载 2022-02-13 16:58:12 · 99 阅读 · 0 评论 -
设计模式(9):C++模板方法模式
目录 一 作用 二 UML类图 三 举个栗子 一 作用 模板方法定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以再不改变一个算法的结构即可重新定义该算法的某些特定步骤。通过把不变的行为搬移到基类中,去除了子类的重复代码,提供了一个很好的代码复用解决方案。 二 UML类图 三 举个栗子 //template.h #pragma once #include <iostream> class Template { public: vir转载 2022-02-12 15:55:06 · 98 阅读 · 0 评论 -
设计模式(8):C++代理模式
目录 一 作用 二 UML类图 三 举个栗子 一 作用 代理模式也称为委托模式。作用就是找一个对象来替我们访问某个对象。 意图:为其他对象提供一种代理以控制对这个对象的访问。 二 UML类图 Subject:定义RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy。 RealSubject:真实处理业务的角色。 Proxy:保存一个引用使得代理可以访问实体。 提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体转载 2022-02-12 15:41:28 · 128 阅读 · 0 评论 -
设计模式(7):C++组合模式(Composite)
目录 作用: UML图如下: 何时使用组合模式: 抽象基类: 接口函数: 说明: 代码如下: 作用: 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 UML图如下: 在Component中声明所有用来管理子对象的方法,其中包括Add、Remove等,这样实现Component接口的所有子类都具备了Add和Remove。 这样做的好处就是叶节点和枝节点对于外界没有区别,它们具备 完全一致的行为 接口。 但问题也很明转载 2022-02-12 15:27:29 · 192 阅读 · 0 评论 -
设计模式(6):C++工厂+注册
实现动机 最近项目中需要用到工厂模式,但是普通的工厂模式面临一个问题,每新增一个派生类,都需要在工厂中加一个case分支,这样就会频繁地修改工厂的代码,而且随着派生类越来越多,case分支也逐渐增多,代码越来越臃肿,对于后期的维护也不友好。下面是一个工厂方法的伪代码: Message* create(int type) { switch (type) { case MSG_PGSTATS: m = new MPGStats; break;转载 2022-02-12 15:19:42 · 1146 阅读 · 0 评论 -
设计模式(5):C++装饰模式
目录 简介 动机 适用性 结构 装饰模式的参与者 效果 注意点 实例 UML图 代码与函数 代码 总结 简介 动态地给一个对象添加一些额外的职责。 就增加功能来说,装饰模式比生成子类更为灵活。 动机 有时我们希望给某个对象而不是整个类添加一些功能。 使用继承机制是添加功能的一种有效途径,但不够灵活,用户不能控制对组件添加功能的方式和时机。 一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加功能,我们称这个嵌入的对象为装饰。 这个装饰与它所装饰的组件接口一致,因此它转载 2022-02-12 15:14:17 · 51 阅读 · 0 评论 -
设计模式(4):C++适配器模式
生活中的适配器 买笔记本电脑,买手机时,都有一个电源适配器,电源适配器又叫外置电源,是小型便携式电子设备及电子电器的供电电压变换设备,常见于手机,笔记本电脑上。它的作用是将家里的220V高电压转换成这些电子产品能工作的5V~20V左右稳定的低电压,使它们能正常工作。就是说,如果没有这个电源适配器,我们的手机和电脑就不能进行充电了。 之前同事去日本出差,由于工作需要,就将自己的笔记本带过去了。到了的当晚就悲剧了,笔记本无法使用。由于日本的居民用电电压是110V,而中国是220V,同事的笔记本是220V供电转载 2022-02-12 15:06:45 · 80 阅读 · 0 评论 -
设计模式(3):C++策略模式
1. 概述 策略模式: 定义一系列算法,把它们一个个封装起来,使得它们可以相互替换。策略模式使得算法变化可独立于使用它的用户。 优点: ①算法可以自由切换。 ②避免使用多重条件判断。 ③扩展性良好。 缺点: ①策略类会增多。 ②所有策略类都需要对外暴露。 2. UML类图 3. 代码实现 //strategy.h #pragma once #include <iostream> class Strategy { public: virtual ~Strategy..转载 2022-02-12 14:41:54 · 81 阅读 · 0 评论 -
设计模式(1):C++单例模式
文章目录 0.导语 1.众所周知的单例 2.懒汉与饿汉 3.多线程加锁 4.双重检查锁模式 5.memory barrier指令 6.静态局部变量 7.Atomic 8.pthread_once 9.总结 10. 参考文献 0.导语 相信大家面试都逃不开设计模式话题,本节将阐述面试中的最常用的设计模式(单例模式),从分类,线程安全,不基于C++11标准的角度与基于C++11标准的角度,有哪些解决线程安全的单例模式方案,相信认真看完本篇文章,在以后面试中就不用担忧了。 1.众所周转载 2022-02-12 10:29:14 · 269 阅读 · 0 评论 -
设计模式(2):C++观察者模式
观察者模式(大话设计模式):(又叫发布-订阅模式) 这是一个有意思的模式 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性,我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便 当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少的对象有待改变,应该考虑使用观转载 2022-02-12 14:34:54 · 117 阅读 · 0 评论