设计模式
Silent_Blue_Sky
欢迎留言讨论
展开
-
c++-策略模式
#include <iostream>#include <vector>#include <string>using namespace std;class BubbleSorterInterface { public: [[nodiscard]] virtual bool compare(int index) const = 0; virtual void swap(int) = 0; [[nodiscard]] virtua原创 2021-11-25 18:07:22 · 171 阅读 · 0 评论 -
c++-模板模式
文章目录简单理解版本输出优化版本输出模板模式,目的是提供一个代码框架, 而将细节下沉到子类其和策略模式非常的相似差别之一是策略模式:借助组合+委托实现模板模式:借助继承模板模式适合在那种流程固化的地方使用,比如说各种框架里面,主类封装好流程, 业务逻辑下沉到子类实现简单理解版本#include <iostream>#include <vector>#include <string>using namespace std;// 模板模式// 父原创 2021-11-25 17:34:38 · 332 阅读 · 0 评论 -
c++-工厂模式
文章目录工厂模式的实现输出上一节,介绍简单工厂模式, 并比较了三种工厂模式的区别简单工厂模式工厂模式的实现在这种模式下, 工厂将是抽象的, 且一种具体商品 对应一种 工厂,我们可以发现,在我们进行产品升级的时候,我们可以只修改一行代码,其他地方都没保持不变#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector&g原创 2021-11-22 20:05:19 · 960 阅读 · 0 评论 -
c++-简单工厂模式
简单工厂: 工厂是非抽象的,具体工厂模式: 工厂是抽象的, 且只生成一种产品抽象工厂: 工厂是抽象的, 且可以生产很多产品,所以他面对于一个问题,如果想要增加一类产品的话, 抽象工厂模式就得修改抽象, 就是对修改不关闭...原创 2021-11-10 19:17:39 · 757 阅读 · 0 评论 -
c++-装饰者模式三
特点:没有走虚函数那套#include <iostream>#include <string>#include <memory>using namespace std;string doubleToStr(double price) { char buffer[128]; snprintf(buffer, sizeof(buffer), "%.2lf", price); return buffer;}string descri原创 2021-11-03 20:06:09 · 239 阅读 · 0 评论 -
c++-装饰者模式二
#include <iostream>#include <string>#include <memory>#include <cassert>using namespace std;// 反射相关class funcValidPolicy { public: template<typename , typename ... > static false_type Valid(...); template&原创 2021-11-02 19:40:40 · 143 阅读 · 0 评论 -
c++-装饰者模式一
#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#include <unordered_map>#include <原创 2021-10-31 01:30:13 · 130 阅读 · 0 评论 -
c++模版编程实践-CRTP实现List的迭代器loop based for
c++ 迭代器和java的迭代器实现方式差别极大下面展示stl list 迭代器的实现方式,使用的是模版技巧CRTPCRTP前置示例好处是只需要实现几个简单接口,便能借用这几个接口实现一整套接口,非常方便, CRTP详细好处百度一下。#include <iostream>#include <utility>#include <string>#include <cstring>#include <vector>#include &原创 2021-10-30 12:30:45 · 124 阅读 · 0 评论 -
c++-观察者模式的实现
#include <iostream>#include <unordered_set>#include <memory>using namespace std;class Observer;class Subject;class Subject {private: unordered_set<shared_ptr<Observer>> obs;protected: char buff[1024]{};p原创 2021-07-08 12:45:56 · 125 阅读 · 0 评论 -
c++ 命令模式
#include <iostream>#include <vector>#include <memory>using namespace std;class Command {public: virtual void execute() = 0; virtual ~Command() {}};class NoCommand : public Command {public: void execute() override {原创 2021-05-19 17:58:18 · 90 阅读 · 0 评论 -
c++不一样的对象池
#include <iostream>using namespace std;const int N = 10;// 注意越界问题template<size_t S>struct idAllocator { // 存储回收的节点的 id int recycledQueue[S]; // [0, recycleTop] 可回收区域 // 用户回收再利用 int recycledIndex; // 最大下一个可用下原创 2021-05-18 19:25:42 · 61 阅读 · 0 评论 -
畅游模板编程--纯面向接口编程(无需显示继承,类 golang 隐式接口)
本文的目的 实现类似于 golang 的隐式接口, 何为隐式接口, 那不得不先说下 c++ 的显示接口了, 我们知道 c++中,如果要实现一个接口必须显示的继承这个接口#include <algorithm>#include <iostream>#include <stack>#include <vector>using namespace std;class speakBehavior {public: virtu...原创 2021-05-13 20:54:47 · 230 阅读 · 0 评论 -
c++类golang 隐士继承的实现
#include <string.h>#include <algorithm>#include <iostream>#include <map>#include <numeric>#include <queue>#include <set>#include <stack>#include <string>#include <unordered_map>#include原创 2021-05-13 15:07:42 · 122 阅读 · 0 评论 -
c++ pipeline设计模式的实现
pipeline 设计模式的实现, 有几个小问题暂时还懒得解决getDownStream 每次都重新生成新的对象,可以优化下pipeline 模式的核心是 downstream 可以方便提供, 目前写死了。#include <string.h>#include <algorithm>#include <iostream>#include <map>#include <numeric>#include <queue>原创 2021-05-11 15:00:36 · 3703 阅读 · 2 评论