
学习计划之设计模式
不然秋月春风夜
不然秋月春风夜,争那闲思往事何。
展开
-
c++设计模式之享元模式
享元模式运用共享技术有效地支持大量细粒度的对象。在享元对象内部并且不会随环境改变而改变的共享部分,称为享元对象的内部状态,而随环境改变而改变、不可以共享的状态就是外部状态。在享元模式(flyweight)内部状态存储于对象之中,而外部状态则应该考虑由客户端对象存储或计算,再调用该对象的时候,将对应的外部状态传入。#include <iostream>#include <map...原创 2018-11-23 22:25:18 · 124 阅读 · 0 评论 -
c++设计模式之原型模式
原型模式,其实是根据一个原型进行拷贝构造,但是需要注意深拷贝和浅拷贝的区别。#include <iostream>#include <string>using namespace std;/*原型模式* 简单而言就是,调用了拷贝构造函数(分为浅拷贝和深拷贝)。拷贝模式比直接new一个对象* 的开销要小的多* 什么时候应该使用原型模式呢?在程序运行时(对象属性发...原创 2018-11-27 23:14:24 · 125 阅读 · 0 评论 -
c++设计模式之外观模式
外观模式:是将子系统的功能组合在一起,通过外观类,提供统一的接口。什么时候该使用外观模式呢?在设计初期,应该将软件分层,在层与层之间建立外观类,这样就可以为为复杂的新系统提供一个简单的接口。另一种情况是,在维护一个大型遗留系统时。可以使用外观模式,而将原来的系统当做一个子系统放进其中。#include <iostream>#include <memory>using ...原创 2018-11-26 21:39:34 · 138 阅读 · 0 评论 -
C++设计模式之代理模式
代理模式,控制对一个对象的访问。为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。#include <iostream>#include <memory>#include <string>using namespace std;/* 代理模式* ...原创 2018-11-24 21:54:20 · 352 阅读 · 0 评论 -
c++设计模式之模板模式
模板模式其实就是提供了一个代码的可复用模式。就是将对象中公共的部分都抽象到父类中,而将子类的特殊操作,通过虚函数重载的方式进行特化。#include <iostream>#include <memory>using namespace std;/* 模板模式* 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以* 不改变一个算法的结构即可...原创 2018-11-24 20:02:10 · 154 阅读 · 0 评论 -
c++设计模式之抽象工厂模式
抽象工厂模式是提供一个接口,用来创建一系列对象的接口。#include <iostream>#include <string>#include <memory>using namespace std;/* 抽象工厂模式* 抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。*/class IApple{pub...原创 2018-11-25 21:25:47 · 161 阅读 · 0 评论 -
c++设计模式之工厂模式
工厂模式更像是将简单工厂模式在开闭原则的情况(对修改关闭对新加开放)进行了修改。#include <iostream>#include <string>using namespace std;/* 工厂模式* 工厂模式就是定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使* 一个类的实例化延迟到子类。* 工厂模式和简单工厂模式的区别,简单工厂...原创 2018-11-25 20:49:11 · 104 阅读 · 0 评论 -
c++设计模式之装饰模式
装饰模式,是为了动态的增加一个职责,但是需要是顺序增加的。实现的核心,是通过has-a的方式,是在子类中存储一个父类的指针或者引用,然后再生成该装饰的时候,将父类的地址传入,然后通过父类的多态来实现原来的功能,自己在新的装饰器类中在添加新的功能。#include <iostream>#include <memory>#include <string>u...原创 2018-11-22 23:15:07 · 143 阅读 · 0 评论 -
c++设计模式之策略模式
策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户。二者的相同点是,都是通过多态来实现子类的实现。简单工厂模式是通过选项生成对应的子类,来进行对应的操作。而策略模式是将生成子类的操作和对子类的操作封装在了一起,实现了更好的封装。建议使用策略模式和简单工厂模式配合,即下文所示,更用户最小的暴露。该方法只给用户暴露一个Context接口#i...原创 2018-11-22 19:39:45 · 153 阅读 · 0 评论 -
c++设计模式之简单工厂模式
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端(使用工厂类)的选择条件动态实例化相关的类,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。对于动态实例化,我们可以借助智能指针来完成对对象的管理。代码如下:#include &lt;iostream&gt;#include &lt;memory&gt;using namespace std...原创 2018-11-22 18:28:29 · 259 阅读 · 0 评论 -
c++设计模式之单例模式
单例模式故名思义就是只允许生成一个实例。一般分为懒汉式和饿汉式。所谓的饿汉式,就是直接在main之前就调用GetInstacnce,在程序执行之前就生成。另一个是懒汉式,是在程序中需要使用的时候在使用。饿汉式不需要考虑多线程的问题。而懒汉式需要考虑多线程的问题。class A{ public: //接口 static A* GetInstance() { //double Chec...原创 2018-12-20 23:35:02 · 115 阅读 · 0 评论