设计模式C++实现
Design Patterns: Elements of Reusable Object-Oriented Software
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 00 设计模式七大原则
原创 2021-12-04 11:04:09 · 155 阅读 · 0 评论 -
C++ 16 责任链模式
总览 责任链 Chain of Responsibility链. 说明 信息的传送. 链表和函数结合。 实际是: 链表的遍历。 好处 各自的责任明确。前后关系明确即可。 责任链的链表可以是双向链表。 案例 书接上回 鞋贩子的公司规模变大。 流程就需要明确,需要逐级汇报,上级有权驳回。 案例 #include<iostream> class ShenHeRenYuan { public: virtual bool.原创 2022-05-29 10:18:23 · 172 阅读 · 0 评论 -
C++ 15 接口类型(组合)设计模式总结
总览 核心 组合。 说明 适配器:将成员a类,转化为b类. 桥接: 自由组合,各自变化. 过滤器: 组合成员a类,用于过滤a类一般是某种条件. 组合模式: B+树,层次结构.不过是树的函数加多态形态. 装饰器模式: 自己组合自己,链表的形式. 外观模式: 组合其他类,任意组合都需要对外提供集中简单的功能,不直接对外,getter,setter都是。 享元模式: 组合其他类,以key:value的形式缓存. 代理模式: 组合,自己组合自己,和装饰器相似,不过这个是增加处理步骤,装饰器..原创 2022-05-26 09:00:38 · 1152 阅读 · 0 评论 -
C++ 14 代理模式
说明 代理 代理,代理律师,代理人. 可以全权负责. 好处 添加中间层,可以添加中间层,对一些事情进行加强。 案例 参数检测,代理可以用于参数的检测,添加安全之类的。 添加中间层。 案例 书接上回 鞋贩子的秘书代理 签合同,盖章。 案例 #include<type_traits> #include<iostream> class TanPan { public: virtual void QianHeTong..原创 2022-05-23 22:10:35 · 114 阅读 · 0 评论 -
C++ 13 享元模式
简介 享元模式 缓存机制。 也需要友好的设计释放。 优点 减少对象创建,应用广泛。 缓存机制的实现之一。 案例 书接上回 鞋贩子允许客户反馈喜欢的,想要买的鞋子,然后专门进货。 代码 #include <iostream> #include <string> #include <set> class XieFanZi{ public: void ChaXun(std::string xie) ..原创 2022-05-21 09:46:20 · 138 阅读 · 0 评论 -
C++ 12 外观模式
说明 外观模式 简化操作对外。 甚至可以理解为对外的傻瓜操作。比如游戏的上下左右。隐藏底层的逻辑。 核心 接口不变。 接口实现变化。 甚至可以理解为只有函数声明。 使用场景 分层结构。 对外提供函数,系统对外仅仅提供几个系统调用。 案例 书接上回 鞋贩子开通了一个小程序,允许客户在线选购。 就提供了选择和买卖的功能。 代码 #include<iostream> #include<string> #include&..原创 2022-05-20 23:33:07 · 255 阅读 · 0 评论 -
C++ 11 装饰器模式
说明 装饰器模式 decorator pattern. 动态的添加和删除,抛开设计模式,能够动态添加和删除的数据结构就是链表。链表分叉,形成树,图。 好处 动态的给对象添加一个功能。 形式也是以链表的形似和。 扩展一个功能将不需要继承或者是组合。 坏处 坏处复杂。 类爆炸。 对比 集合存储方式差异。 构造者定长数组,装饰器变长链表。 要是有层次模式,还可以用组合模式来进行管理。 案例 书接上回 鞋贩子出席漫展,去cosplay。 ..原创 2022-05-19 09:04:30 · 312 阅读 · 0 评论 -
C++ 10 组合模式
说明 组合模式 Composite pattern 即将若干基础组成一个整体,也就是树,不过节点比较多,就是2-3-4树,多叉树,B+树. 突出的就是整体由若干组成。 对比建造者 建造者着重于创建对象。 着重于组合,逻辑结构。两者不冲突。 组合模式注重的是逻辑结构,树型结构。建造注重的是结果。 补充 可以是上下级的组织结构。 也可以是平级的组织结构。 常用 公司的层次结构,上下级关系。 语法树。 UI中的窗口控件树。 案例 书接上..原创 2022-05-18 09:04:10 · 128 阅读 · 0 评论 -
C++ 09 过滤器
说明 过滤器 裁判,每个裁判有自己的标准。 即提供一个裁判功能,输入集合,输出合格的,选出不合格的。 说明 接口,即一个功能,或者能力。 比如 比如某个人,可以当老师,达者为师,能教一些本领或知识都可以称为老师。 教授就是一个能力。 案例 书接上回 鞋贩子的规模扩大,但是人员不够,就开始招聘。 收到很多建立就叫了几个组长,经理过来一起看简历。组长们选,经理再选,最后把合适的给鞋贩子看。 案例 #include <iostrea..原创 2022-05-17 22:23:47 · 395 阅读 · 0 评论 -
C++ 08 桥接模式
说明 桥接模式 A:B的笛卡尔积。 不过有个主次之分。 好处 将两个独立变化的组合起来。 案例 书接上回 鞋贩子为了发展企业文化,促进同事之间的关系。 组织了一场CS真人对战。 案例 #include<iostream> #include<string> /************************/ class Guns { public: virtual void shot() = 0; }; class J..原创 2022-05-16 20:59:34 · 132 阅读 · 0 评论 -
C++ 07 适配器模式
说明 适配器模式 A伪装成B. 好处 将两个不想关的类关联。 不需要改动,可以随意的增删。 将变化的隔离出来。 案例 书接上回 鞋贩子的卖鞋在当地有了名气,需要出席一些会议。 自己懒散惯了,穿着随意,也没有穿过正装,而参加会议的着装有要求。 必须西装革履加皮鞋。 案例 #include<iostream> #include<string> class HuiYiBiaoZhun { public: virtual std..原创 2022-05-15 10:18:07 · 119 阅读 · 0 评论 -
C++ 06 创建型设计模式总结
回顾 创建 唯一的单例模式。 生物多样性的工厂。 生物多样性带生态系统的抽象工厂。 组装厂的建造者模式。 一对一复制的原型模式。 说明 单例则保证对象只有一个。 工厂则创建一类对象。 抽象工厂则创建多类对象。 建造者模式则创建一类对象组装后的结果。缝合怪。 原型模式则复制粘贴。 总结 唯一选择单例。 复制选择原型模式(拷贝构造). 一类选择工厂. 工厂太大(if else 实在是太多啦,造成函数体特别大)选择抽象工厂. 建造者..原创 2022-05-14 10:18:51 · 163 阅读 · 0 评论 -
C++ 05 原型模式
说明 原型模式 拷贝构造. 有丝分裂。一分为二。 好处 整个拷贝,加上了状态。 案例 书接上回(番外篇) 鞋贩子开始修仙,捡到一本《一气化三清》的道法。 然后练成了,练出一个分身。 主体和分身有关联。那就变成主从。练出两个分身,就变成了集群。 主题和分身之间的信息交互就成了分布式主从之间的一致性问题。 案例 #include<string> #include<iostream> class XieFanZi { publi..原创 2022-05-14 10:06:12 · 129 阅读 · 0 评论 -
C++ 04 建造者模式
说明 建造者模式 由若干零件拼凑成了一辆车。 车就是最终得产物,零件则就是基本元素。 核心 零件组装,即组装厂。 好处 同样的一堆零件,可以组成若干种产品。 案例 书接上回 鞋贩子规模扩大,想在进店门口摆放一个吉祥物。 而且吉祥物需要用乐高完成。 那么乐高小零件就是最小基本元素,而最终拼凑的吉祥物就是产物。 代码 #include<iostream> #include<vector> #include<st..原创 2022-05-13 08:36:07 · 178 阅读 · 0 评论 -
C++ 03 单例模式
说明 单例模式 唯一对象,一般资源共享,全局可访问。 共享就需要注意线程之间数据竞争。 核心 中央集权.一般用于全局唯一管理。 好处 额,有这个需求,就有这个实现。 案例 书接上回 鞋贩子开了店,规模越来越大,就有人想要入股投资。 入股投资就会导致以后公司可能不是自己一个人说了算。 所以,就拒绝了。 现在需要招聘更多店员,入职审批都需要老板同意。 代码 #include<iostream> #include<vecto..原创 2022-05-12 08:52:16 · 122 阅读 · 0 评论 -
C++ 02 抽象工厂
说明 抽象工厂 工厂太大,if else太多,不好管理,就要拆分. 按组进行管理. 核心 if else不可能无限增加。 多了就得拆分,不然增加管理难度。 好处 降低管理难度和复杂度。 案例 接上回 鞋贩子摆摊发财了。规模变大。租了两层楼来卖鞋。 一层楼卖拖鞋,一层楼卖运动鞋。 鞋子则按照很多进行分类。 拖鞋有:沙滩拖鞋,人字拖等。 运动鞋有:跑步鞋,篮球鞋,足球鞋等。 代码 #include<iostream> #incl..原创 2022-05-11 23:32:20 · 259 阅读 · 0 评论 -
C++ 01 工厂模式
说明 工厂模式 给别人用简单。 给自己用方便。 核心 降低使用难度。 好处 重复写非常复杂的创建过程。 容易出错且重复性高。 写程序就是要减少重复性的劳动。一次就好。 案例 买鞋 外地人鞋贩子那儿买鞋。 本地方言和书面语的对应。 代码 #include<iostream> #include<string> class XieZi { public: virtual void ShaXie() = 0; };..原创 2022-05-11 23:05:34 · 200 阅读 · 0 评论
分享