![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大话设计模式
复习备考的龙龙
学习C++的一名小学生,欢迎大家沟通交流~
展开
-
大话设计模式15-职责链模式-2021-1-12
文章目录一、职责链模式是什么?二、代码实现总结一、职责链模式是什么?使得多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系。将对象连成一个链条,请求按照链条传递,直到可处理为止。二、代码实现代码如下(示例)://15.职责链条模式enum REQUEST_TYPE{ REQUEST_ASK_FOR_LEAVE=0, REQUEST_ADD_SALARY};typedef struct _request{ string text; REQUEST_TYPE type.原创 2021-01-12 18:07:53 · 82 阅读 · 0 评论 -
大话设计模式14-建造者模式-2021-1-12
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、建造者模式是什么?二、具体代码总结一、建造者模式是什么?当需要创建一个复杂的对象,并且对象的建造顺序稳定时,为了使得建造代码和表示代码相分离,隐藏对象建造过程,可以使用建造者模式。类图示意如下:其中builder类定义了对象建造使用的抽象接口,concretebuilder类定义了不同对象的具体接口,director类调用具体对象接口,按照一系列顺序建造对象。二、具体代码代码如下(示例)://14 建造者模式c原创 2021-01-12 16:28:52 · 112 阅读 · 0 评论 -
大话设计模式13-命令模式-2020-9-24
1.命令模式简介命令模式:将一个请求封装为一个对象,从而使得你可用不同的请求对客户进行参数化;对请求排队或者记录日志,以及支持可撤销的操作。UML类图如下:2.实例定义几个类模拟烧烤店烧烤场景,具体类图如下:c++ 代码实现如下:#include<exception>#include <iostream>#include<string>#include<list>using namespace std;//13.命令模式:烧烤店烧烤原创 2020-09-24 16:42:16 · 84 阅读 · 0 评论 -
大话设计模式12-桥接模式-2020-9-24
1.桥接模式简介桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。通俗的说,当一个系统有多角度分类,并且每一种分类都可能有变化时,就可以将这种多角度分离出来,让他们独立变化,减少他们之间的耦合。UML类图如下:2.实例桥接模式其实也是采用了优先使用合成/聚合复用,而不是继承这个原则。继承是一定是一种is-a的关系,当不是这种关系是,尽量不要继承。不然父类和子类是一种强耦合的关系,如果父类改变,子类都要改变。采用桥接模式完成手机安装软件的设计,UML类图如下:c++ 代码实现如下:原创 2020-09-24 15:51:00 · 82 阅读 · 0 评论 -
大话设计模式11-单例模式-2020-9-24
1.单例模式简介单例模式:保证一个类只有一个初始化实例。可以通过将构造函数定义为私有的,并提供静态公有的初始化方法实现。2.实例c++实现了一个简单的单例模式懒汉版本,未考虑多线程冲突问题。//11.单例模式class Singleton{public: static Singleton *getInstance() { if (m_pSingleton==NULL) { m_pSingleton = new Singleton; } return m_pSing原创 2020-09-24 15:28:14 · 77 阅读 · 0 评论 -
大话设计模式10-组合模式-2020-9-24
1.组合模式简介组合模式:将对象组合成树形结构来表示“部分-整体”的关系,组合模式使得单个对象和组合对象使用具有一致性。UML类图如下:2.实例实现一个公司的办公管理系统,父公司下面可能既有子部门也有子公司。UML类图如下:c++代码实现如下:#include<exception>#include <iostream>#include<string>#include<list>using namespace std;//10.组合模式原创 2020-09-24 15:12:45 · 84 阅读 · 0 评论 -
大话设计模式09-备忘录模式-2020-9-24
1.备忘录模式简介备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样以后就可以将对象恢复到原先保存的状态。UML类图如下:Originator将内部状态保存到Memento中,memento通过caretaker进行管理。2.备忘录实现将游戏打boss前的状态保存下来,战斗结果不理想时进行恢复。UML类图如下:c++ 代码实现如下:#include<exception>#include <iostream>#include原创 2020-09-24 11:19:19 · 94 阅读 · 0 评论 -
大话设计模式08-状态模式-2020-9-24
1.状态模式简介状态模式:当一个对象的内在状态允许改变其行为,这个对象看起来好像改变了其类。主要用于一个对象的状态转换很复杂时,即含有大量的if else 语句时,可以将状态判断逻辑转移到表示不同状态的类中。这样要增加新状态变化时,只需要新增子类和修改部分类,不同修改整个判断函数。UML类图如下:2.状态模式实例书写员工一天工作状态类,工作状态状态和工作时长及任务完成情况有关。其类图如下:c++实现的代码如下#include<exception>#include <ios原创 2020-09-24 10:34:51 · 116 阅读 · 0 评论 -
大话设计模式07-抽象工厂模式-2020-9-22
1.抽象工厂模式简介抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体实现的类。UML类图如下:抽象工厂类对应有多个系列的产品,每个系列都有一个抽象产品父类和多个具体产品子类。定义了一个父类工厂,并且对每一个系列产品都有对个具体的子类工厂,子类工厂中定义了该系列产品的具体创建方法。2.实例定义了两类数据库的操作类,包括sql和access。UML类图如下所示c++代码实现如下#include<exception>#include <iost原创 2020-09-22 17:02:51 · 102 阅读 · 0 评论 -
大话设计模式06-外观模式-2020-9-22
1.外观模式简介外观模式:为子系统中的一组接口提供一个一致的界面,即定义一个高层接口,使得子系统更容易使用。类图如下:2.实例定义多个股票类,并提供买入卖出函数,定义基金类作为外观类,封装股票类实现。主要类图如下:#include<exception>#include <iostream>#include<string>//六外观模式,定义股票类和基金类class Stock1{public: void buy() { cout <原创 2020-09-22 15:47:08 · 70 阅读 · 0 评论 -
大话设计模式05-模板方法模式-2020-9-22
1.模板方法模式简介模板方法模式:父类定义一个算法操作的骨架,将一些步骤延迟到子类中实现。这样将不变的行为搬移到父类,去除了子类的重复代码,有利于代码复用。模板方法模式类图如下:2.实例定义一个试卷抄写类,父类试卷类定义了试题,子类重写了答案的实现部分。类图如下所示:c++代码实现如下:#include<exception>#include <iostream>#include<string>using namespace std;class T原创 2020-09-22 15:28:34 · 74 阅读 · 0 评论 -
大话设计模式04-工厂方法模式-2020-9-22
1.工厂方法模式简介之前用简单工厂模式实现的计算器类的类图如下:当增加一类新的运算时,除了增加一个新的子类,还需要修改简单工厂类的实现,违反了开放-封闭原则。因此出现了工厂方法模式。工厂方法模式只是定义了一个创建对象的接口,由子类去实现该接口,决定创建那个对象,相当于将对象的初始化延迟到了子类。2.实例通过工厂方法模式实现计算器类,主要类图如下:c++ 实现代码如下:#include<exception>#include <iostream>#include&l原创 2020-09-22 11:24:59 · 132 阅读 · 0 评论 -
大话设计模式03-代理模式-2020-9-22
1.代理模式简介:代理模式:为其它对象提供一种代理以控制对这个对象的访问。代理模式类图如下:client想要访问realsubject类时,可以通过proxy类访问。realsubject和proxy继承自subject父类,subject类中定义了统一的接口,realsubject定义接口具体实现,proxy接口调用该实现。2.实例追求者Persuit想要追求SchoolGirl,胆子比较小,只能通过Proxy去追。代码实现如下:#include<exception>#inclu原创 2020-09-22 10:39:50 · 78 阅读 · 0 评论 -
大话设计模式02-策略模式-2020-9-18
一、策略模式简介策略模式的定义一系列算法的一种方法,这些算法都是做相同的工作,只是实现不同。为了减少客户端调用和策略算法类的耦合性,即可使用策略模式。其主要框架如下:Strategy为策略父类,有多个不同策略子类继承于它。Context类包含Strategy成员,将Strategy类的函数做了进一步封装,并提供给客户端使用。二、实例采用策略模式+简单工厂模式实现一个超市收银时根据不同策略计算实际收取金额的类,其类图如下:用c++代码实现如下:#include<exception>原创 2020-09-18 16:28:46 · 100 阅读 · 0 评论 -
大话设计模式01-简单工厂模式-2020-9-18
一、简单工厂模式简介 简单工厂模式:当定义了多个子类来继承父类以实现不同扩展时,**为了避免将多个子类暴露给客户端,减少耦合性,可以新增一个简单工厂类,负责根据传入参数初始化不同子类对象。**二、实例 实现一个简单的计算器类,可以完成加减乘除运算,类图如下所示。 ![UML类图](https://img-blog.csdnimg.cn/20200918154428767.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shado原创 2020-09-18 15:48:10 · 127 阅读 · 0 评论