![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
用C++实践设计模式
RayAtTing
这个作者很懒,什么都没留下…
展开
-
设计模式(八)之工厂方法
定义一个用于创建类的接口,让子类决定实例化哪一个类。使得一个类的实例化得到延迟。案例下面是一个计算器的案例,不满足开闭原则,我们需要对它进行优化//加法class OperationAdd{private: double _numberA; double _numberB;public: OperationAdd(double a , double b):_numberA(a),_numberB(b){} double getResult(){原创 2020-07-18 15:28:01 · 92 阅读 · 0 评论 -
设计模式(七)之桥模式
案例: 现在需要在PC和Mobile两个平台实现相关的业务。首先看一下简单的方案,直接通过类的继承来实现。缺点:但是这个方案不满足开闭原则,当我们需要添加一种平台或者说添加一种业务实现的方案会使得类增加非常多。class Messager{public: virtual void Login(QString name , QString psswd) = 0; virtual void SendMessage(QString msg) = 0; virtua原创 2020-07-18 11:26:21 · 123 阅读 · 0 评论 -
设计模式(六)之装配模式
使用继承的方法,如果职责划分不清晰,子类会急剧膨胀。动机过度使用继承的方式会出问题案例对各种流需要读写等。第一种方式直接采用继承的方式 只要再加一个网络数据流那么就会发生类爆炸class Stream {public: //读数据流 virtual char Read(int num) = 0; //写数据流 virtual void Write(char data) = 0; //定位数据流 virtual void Seek(int po原创 2020-07-17 15:26:49 · 1724 阅读 · 0 评论 -
设计模式(五)之观察者模式
动机我们可能需要构建一种通知依赖的关系。一个对象状态发生变化的时候,会通知所欲依赖的对象。观察者模式class Observer { //更新public: virtual void update() = 0; virtual ~Observer(){} QString mName;};class Subject { //观察者数组 protected: QVector<Observer*> oVector;原创 2020-07-17 15:25:01 · 105 阅读 · 0 评论 -
设计模式(四)之策略模式
技巧:如果代码中使用到if else 语句的时候就可以使用策略模式,但不是说都适合策略模式,如果条件的个数是固定的,比如说一周有七天,每一天执行不同的操作,就不需要使用策略模式。如果条件的个数是不一定的或者说后面需要添加的,这种情况下就可以考虑使用策略模式。优点:1.当if else很多的时候,使用策略模式可以使得代码执行的效率提高。if else 其实只有一种情况被执行,其他的代码其实都是没有用到的。2.可以动态的去添加新的功能 ,而不需要修改代码案例:不同国家的税法不同的计算方式第..原创 2020-07-17 15:23:50 · 119 阅读 · 0 评论 -
设计方法(三)之模板方法
定义:一个操作中的算法骨架稳定,可以将一些步骤延迟到子类中。子类不改变一个算法的结构而重写该算法的某些特征。类图案例:应用程序需要调用一个库的几个方法 完成一个相对来说比较固化的算法处理流程。第一种方式没有使用模板方法。class Template_Lib{public: Template_Lib(){} void step1(){} void step3(){} void step5(){}}; class App{public:原创 2020-07-17 09:22:23 · 105 阅读 · 0 评论 -
设计模式(二)之单例模式
在整个软件系统中,某个类智能存在一个对象实例,并且该类只提供一个获取对象实例的方法。单例模式有8种方式:1.饿汉式(静态常量)请注意这行代码,在类装在的时候已经实例化了。这样来避免构造类的时候线程同步的问题但是这样也会造成内存浪费的问题,因为及时不使用的时候也会去构造这个类。Singleton * Singleton::single = new Singleton;class Singleton{public : static Singleton* GetSingleton(voi原创 2020-07-16 20:29:13 · 79 阅读 · 0 评论 -
设计模式(一)之七大原则
文章目录单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则单一职责原则一个类只负责一个职责如果逻辑简单可以在方法这一级别上保持单一职责案例 :设计一种交通工具run方法第一种 所有交通工具设计成一个类class Single_Rseponsibilty1{public: Single_Rseponsibilty1(); void run(QString str){ qDebug()<< str <<原创 2020-07-16 08:22:59 · 256 阅读 · 1 评论