设计模式C++
介绍各个设计模式的用法
奋斗的大庆
勤劳一日,可得一夜安眠;勤劳一生,可得幸福长眠;只有尝过苦的滋味才会更加珍惜甜
展开
-
【C++设计模式】组合模式
索引目录1 含义2 模式结构![在这里插入图片描述](https://img-blog.csdnimg.cn/20201204095511823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N1dGVteXBpZw==,size_16,color_FFFFFF,t_70)3 代码实现4 优缺点5 适用场景6.模式扩展参考1 含义组合多个对象形原创 2020-12-04 10:32:28 · 194 阅读 · 0 评论 -
【C++设计模式】观察者模式
索引目录1 含义2 模式结构3 代码实现4 优缺点5 适用场景6.模式扩展参考1 含义定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。2 模式结构Subject: 目标,发生改变的对象称为观察目标ConcreteSubject: 具体目标,包含有经常原创 2020-12-04 09:14:46 · 78 阅读 · 0 评论 -
【C++设计模式】装饰器模式
索引目录1 含义2 模式结构3 代码实现4 优缺点5 适用场景6.总结参考1 含义动态地给一个对象增加一些额外的职责(Responsibility),装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。。2 模式结构Component: 抽象构件定义了对象的接口,可以给这些对 象动态增加职责(方法)ConcreteComponent: 具体构件定义了具体的构件对象,实现了在抽象构件中声明的方法,装饰器可以给它增加额外的职责(方法)Decorator: 抽象装饰类是抽象构件类的子类,原创 2020-12-03 18:22:28 · 131 阅读 · 0 评论 -
【C++设计模式】备忘录模式
索引目录1 含义2 模式结构3 代码实现4 优缺点5 适用场景6.与其他模式的关系参考1 含义在不暴露对象实现细节的情况下保存和恢复对象之前的状态。2 模式结构3 代码实现举例:用户信息操作撤销#include <iostream>#include <string>using namespace std;//备忘录Mementoclass Memento{private: string account; string password; str原创 2020-12-03 17:39:20 · 144 阅读 · 0 评论 -
【C++设计模式】外观模式
索引目录1 含义2 模式结构3 代码实现4 优缺点5 适用场景6.总结参考1 含义为子系统中的一组接口提供一个一致的界面2 模式结构Facade: 外观角色,是在客户端直接调用的角色,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理SubSystem:子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能。3 代码实现举例:电源总开关#include<iostream原创 2020-11-24 10:45:31 · 75 阅读 · 0 评论 -
【C++设计模式】中介者模式
索引目录1 含义2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景6.总结参考1 含义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2 模式结构中介者承担两方面的职责:中转作用(结构性):通过中介者提供的中转作用,各个同事对象就不再需要显式引用其他同事,当需要和其他同事进行通信时,通过中介者即可。该中转作用属于中介者在结构上的支持。协调作用(行为性):中介者可以更进一步的对同事之间的关系进行封装原创 2020-11-24 10:19:01 · 161 阅读 · 0 评论 -
【C++设计模式】享元模式
索引目录1 含义2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景参考1 含义:运用共享技术有效地支持大量细粒度对象的复用。2 模式结构Flyweight: 抽象享元类ConcreteFlyweight: 具体享元类UnsharedConcreteFlyweight: 非共享具体享元类FlyweightFactory: 享元工厂类3 代码实现举例:共享网络设备(无外部状态)#include<iostream>#include <vector&原创 2020-11-23 17:02:20 · 219 阅读 · 0 评论 -
【C++设计模式】迭代器模式
索引目录1 含义2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景参考1 含义通过引入代理对象来间接访问一个对象,为其他对象提供一种代理以控制对这个对象的访问2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景大多数语言在实现容器的时候都给提供了迭代器,可以满足我们的需要,所以现在需要我们自己去实践迭代器模式的场景还是比较少见的,我们只需要使用语言中已有的容器和迭代器就可以了。参考1.https://blog.csdn.net/a369189453原创 2020-11-17 13:41:20 · 129 阅读 · 0 评论 -
【C++设计模式】代理模式
索引目录1 含义2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景参考1 含义通过引入代理对象来间接访问一个对象,为其他对象提供一种代理以控制对这个对象的访问2 模式结构Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色3 代码实现举例:小明最近刚参加工作,想在单位附近租一间房子,但是对新环境又不熟悉,所以他想找一个房产中介来帮他租房。#include <iostream>#include <str原创 2020-11-16 10:24:53 · 75 阅读 · 0 评论 -
【C++设计模式】责任链模式
索引目录1 含义2 模式结构3 代码实现4 优缺点4.1 优点4.2 缺点5 适用场景参考1 含义责任链模式主要用于处理请求, 按照顺序将请求动态传递给一系列的潜在接收者, 直至其中一名接收者对请求进行处理。2 模式结构3 代码实现举例:请假是我们日常生活中经常遇到的事,一般请假按请的时间长短需要跟不同级别的管理者请,就是请假这个请求根据时间长短可由不同的处理者处理,非常适合责任链模式。#include <iostream>using namespace std;//抽象处原创 2020-11-16 10:00:21 · 265 阅读 · 0 评论 -
【C++设计模式】命令模式
索引目录1 含义2 UML类图3 代码实现4 优缺点4.1 优点:4.2 缺点:5 适用场景参考1 含义命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。2 UML类图参与者:Command:声明了用于执行请求的execute()等方法,通过这些方法可以调用请求接收者的相关操作。Concret原创 2020-11-13 15:35:30 · 1286 阅读 · 0 评论 -
c++设计模式学习资源
学习文档:图说设计模式设计模式与重构大话设计模式-程杰参考代码:https://github.com/me115/design_patternshttps://github.com/zzlhyly/The_Cpp_Code_of_Big_Talk_Design_Patten原创 2020-11-04 10:42:21 · 152 阅读 · 0 评论