谈 C++17 里的 Chain of Responsibility 模式

2021-10-22
阅读 6 分钟
1.7k
这次的 谈XX模式 系列,并不会逐个全部介绍 GoF 的 23 个模式,也不限于 GoF。有的模式可能是没有模板化复用的必要性的,另外有的模式却并不包含在 GoF 中,所以有时候会有正文的补充版本,像上次的 谈 C++17 里的 Observer 模式 - 4 - 信号槽模式 就是如此。
封面图

谈 C++17 里的 Command 模式

2021-10-20
阅读 4 分钟
2.1k
这次的 谈XX模式 系列,并不会逐个全部介绍 GoF 的 23 个模式,也不限于 GoF。有的模式可能是没有模板化复用的必要性的,另外有的模式却并不包含在 GoF 中,所以有时候会有正文的补充版本,像上次的 谈 C++17 里的 Observer 模式 - 4 - 信号槽模式 就是如此。
封面图

谈 C++17 里的 Factory 模式之二

2021-10-19
阅读 7 分钟
1.9k
在 谈 C++17 里的 Factory 模式 中我介绍了 hicc/cmdr-cxx 中的 factory 模板类,看了一下时间表,动念是 0822,居然这么长时间了(而且都三个月了,写个 GoF 系列竟然也没写出来,我不应该这么懒的)。当时提到 factory 的存在的 T data 问题,即在 factory 的 tuple 中持有每个 products 类的一个具体化实例,原因是为...
封面图

谈 C++17 里的 Memento 模式

2021-10-17
阅读 14 分钟
2.4k
备忘录模式也是一种行为设计模式。它在 Ctrl-Z 或者说 Undo/Redo 场所中时最为重要,这里也是它的最佳应用场所。除此之外,有时候我们也可以称之为存档模式,你可以将其泛化到一切备份、存档、快照的场景里,例如 macOS 的 Time Machine。
封面图

谈 C++17 里的 Strategy 模式

2021-10-03
阅读 4 分钟
1.5k
在地图上对两点进行路线规划就是一种典型的策略模式应用场景。当我们进行起点到终点的路线规划时,我们期待地图给出这些方式的最佳路线:步行。公交,驾车。有时候可能细分为公交(轨道交通优先),公交(换乘优先)等若干策略。
封面图

谈 C++17 里的 State 模式之二

2021-10-01
阅读 17 分钟
2.5k
这是第二部分,有关有限状态机(FSM)的 C++ 实作部分,也等同于状态模式实现Prologue上一篇 谈 C++17 里的 State 模式之一 对于状态模式所牵扯到的基本概念做了一个综述性的梳理。所以是时候从这些概念中抽取我们感兴趣的部分予以实作了。C++ 实现(元编程实现)如果不采用 DFA 理论推动的手段,而是在 C++11/17 的语境...
封面图

谈 C++17 里的 State 模式之一

2021-09-30
阅读 7 分钟
2k
回顾状态模式,考虑实作它的各种问题——特别是有关如何实现一个状态机的问题。同时,这一篇呢,可能不得不分几篇,因为写的时候脑壳在发散嘛,于是就关联得到的、能想起来的都提了一嘴,就多了。但是最后还是会给出代码的,我喜欢写代码的。
封面图

谈 C++17 里的 Observer 模式 - 4 - 信号槽模式

2021-09-22
阅读 12 分钟
3.2k
上上上回的 谈 C++17 里的 Observer 模式 介绍了该模式的基本构造。后来在 谈 C++17 里的 Observer 模式 - 补/2 里面提供了改进版本,主要聚焦于针对多线程环境的暴力使用的场景。再后来又有一篇 谈 C++17 里的 Observer 模式 - 再补/3,谈的是直接绑定 lambda 作为观察者的方案。
封面图

谈 C++17 里的 Observer 模式 - 3

2021-09-20
阅读 5 分钟
2.3k
然后我们提到了,对于观察者模式来说,GoF 的原生定义当然是采用一个 observer class 的方式,但对于差不多 15 年后的 C++11 来说,观察者使用一个 class 定义的方式有点落伍了。特别是到了几乎 23 年后的 C++14/17 之后,lambda 以及 std::function 的支持力度变得较为稳定,无需太多“高级”手法也能轻松地包装闭包或者...
封面图

谈 C++17 里的 Observer 模式 - 补

2021-09-19
阅读 7 分钟
1.7k
上一回的 谈 C++17 里的 Observer 模式 还是有点慌张,所以需要补充完善一下下Observer Pattern - Part II多种 event (types) 问题我们已经解释过,如果你需要很多不同的 event 对象,那么你应该扩展 event 结构成员: {代码...} 这就好像设计一份通讯协议一般的做法,当然,后面的 body 部分应该是相对一致的数据类型才...
封面图

谈 C++17 里的 Observer 模式

2021-09-16
阅读 6 分钟
2.6k
昨天很疲惫,没精力写字。今天凌晨被摇醒,一开始没意识到真的在摇,换了两个姿势没感觉,干脆就写字吧。半晌之后,看新闻才知道确实震了,上一次 CQ 有明显感觉时是 08 年,抱着娃下楼呆站,没有实时的资讯可言,不知道事态将会怎么演变,升斗小民想要挣扎求存也不可得,哪怕是今天其实也是如此,并不会因为消息满天飞...
封面图

谈 C++17 里的 Visitor 模式

2021-09-14
阅读 7 分钟
2.3k
访问者模式是一种行为模式,允许任意的分离的访问者能够在管理者控制下访问所管理的元素。访问者不能改变对象的定义(但这并不是强制性的,你可以约定为允许改变)。对管理者而言,它不关心究竟有多少访问者,它只关心一个确定的元素访问顺序(例如对于二叉树来说,你可以提供中序、前序等多种访问顺序)。
封面图

谈 C++17 里的 FlyWeight 模式

2021-09-07
阅读 13 分钟
2.4k
享元模式,是将复杂对象的相同的组成元素抽出并单独维护的一种结构型设计模式。这些相同的组成元素被称为共享元件,它们在一个单独的容器中被唯一性地管理,而复杂对象只需持有到该唯一实例的参考,而无需重复创建这样的相同的元素,从而能够大幅度地削减内存占用。
封面图

谈 C++17 里的 Factory 模式

2021-08-28
阅读 14 分钟
5.4k
本文不适合初学者,你应该已经对 Factory 模式有所了解,你对于 C++17 的常见特性也不陌生。Factory Pattern回顾下工厂模式,并考虑实现一个通用的工厂模板类以达成业务端低代码的目标。FROM: Refactoring Guru理论Factory 模式是 Creational Patterns 中的一种。创建型模式所谓的创建型模式,主要包含这几种:Abstract ...