![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式(C++)
C++,设计模式,参考大话设计模式
就是那个党伟
凡心所向,素履所往。
展开
-
[C++]生产消费模型
生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。github源码路径:https://github.com/dangwei-90/Design-Mode// 此文件包含 "main" 函数。程序执行将在此处开始原创 2021-01-05 11:58:19 · 308 阅读 · 0 评论 -
[C++]访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace s原创 2020-10-22 22:40:17 · 180 阅读 · 0 评论 -
[C++]解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Content;class I原创 2020-10-22 22:14:44 · 222 阅读 · 0 评论 -
[C++]享元模式
// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Flyweight {public: virtual void Operation(int num) = 0;};class ConreteFlyweight : public Flyweight {public: void Ope...原创 2020-10-21 22:24:08 · 109 阅读 · 0 评论 -
[C++]中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Colleague;class Media原创 2020-10-20 22:29:08 · 226 阅读 · 0 评论 -
[C++]责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Handler {public: vir原创 2020-10-19 22:02:14 · 130 阅读 · 0 评论 -
[C++]命令模式
命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志;以及支持可撤销的操作。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class Receiver {public: void Action() { cout << "receive do action." <<原创 2020-10-17 14:16:46 · 151 阅读 · 0 评论 -
[C++]桥接模式
桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class Implementor {public: virtual void Operation() = 0;};cla原创 2020-10-16 22:48:02 · 304 阅读 · 0 评论 -
[C++]单例模式
一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例。Demo包含C++11 static的demo 和 加锁方式的demo。单例 Singleton 是设计模式的一种,其特点是只提供。原创 2020-10-15 21:58:30 · 155 阅读 · 0 评论 -
[C++]迭代器模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Iterator {public: virtual string First() = 0; virtual string Nex原创 2020-10-14 22:23:03 · 155 阅读 · 0 评论 -
[C++]组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 // 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector>using namespace std;class Component原创 2020-10-13 22:29:58 · 473 阅读 · 0 评论 -
[C++]备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class Player {public: void SetCurrentState(int vitality, int attack, int defence) { vital原创 2020-10-12 22:39:03 · 187 阅读 · 0 评论 -
[C++]适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>usi原创 2020-10-10 22:47:25 · 116 阅读 · 0 评论 -
[C++]状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>usin...原创 2020-04-12 17:33:13 · 511 阅读 · 0 评论 -
[C++]抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束...原创 2020-04-12 16:40:17 · 243 阅读 · 0 评论 -
[C++]观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector> using...原创 2020-04-12 11:12:16 · 269 阅读 · 0 评论 -
[C++]建造者模式
建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>...原创 2020-04-11 13:32:03 · 298 阅读 · 0 评论 -
[C++]外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模...原创 2020-04-11 13:10:46 · 233 阅读 · 0 评论 -
[C++]模板方法模式
模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class AbstractCla...原创 2020-04-11 12:40:23 · 196 阅读 · 0 评论 -
[C++]原型模式
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象C++ 代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class Prototype {public: Prototype(string id) { _id ...原创 2020-04-02 17:38:22 · 155 阅读 · 0 评论 -
[C++]工厂方法模式
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//...原创 2020-04-02 16:27:49 · 248 阅读 · 0 评论 -
[C++]代理模式
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class CGiveGift{public: vir...原创 2020-03-31 11:06:53 · 271 阅读 · 0 评论 -
[C++]装饰模式
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>using namespace std;class Person {public...原创 2020-03-29 23:03:04 · 217 阅读 · 0 评论 -
[C++]策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。C++代码如下:// simple_factory.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结...原创 2020-03-29 21:35:43 · 259 阅读 · 0 评论 -
[C++]简单工厂模式
简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。代码如下:// 参考大话设计模式#include <iostream>using namespace std;// baseclass Operatio...原创 2019-12-09 23:36:24 · 247 阅读 · 0 评论