其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃. 在本文中,建造者模式设计一个搞笑的一幕.根据这一模型来学习功夫的方法,哈哈. 基类的第一,设计.那么你必须有学习武术基础: class 功夫 { public: virtual void 看招() = 0; }; 有了基础之后.我们就能够学习高级功法了,这里学习降龙十八掌.O(∩_∩)O~. list<int>容器.相当于记录下来的武功招式了.记住这些招式之后就能够開始学习了.小宝曰:绝世武功这…
一.基础知识:先前学习建造者模式的时候,总是以这个UML图作为学习基础资料 然后总是要记住四个角色 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.在本类图中,产品类是一个具体的类,而非抽象类.实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成. 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现.这样更容易扩展.一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品. 建造者:实…
这个设计模式感觉很easy,我们平时敲代码的时候也是常常须要调用iterator的,C++和Java都是. 所以感觉没什么特别的.就是须要模仿C++或者Java的iterator类的功能吧. 这里简单写个,使用C++模仿Java的iterator一些功能,呵呵. 首先我们有一个集合类,而这个集合类包括了其它类,当我们须要遍历这个集合类包括的类的时候.就好使用iterator功能了. 比方有一个原始的类: class SalesPerson { private: string name; stri…
本设计模式就是简单地记录当前状态.然后利用记录的数据恢复. 比方首先我们有一个类.类须要记录当前状态进行相关的工作的: class Memo; class Human { public: string state; Memo *makeMemo(); void restroDataFromMemo(Memo *m); void show() { cout<<"State: "<<state<<endl; } }; 这里面的state能够是随意定义的数…
这种设计模式是使用不同类的包裹不同的命令,达到什么样的命令执行什么操作. 有可能进一步利用map您最喜欢的对接命令字. 正在运行的类实际上已经包含了操作的所有需求,例如: class SuperMaker { public: string makeCar() { return "Car"; } string makePlane() { return "Plane"; } }; 这里有两个命令.以下要做的就是使用不同的类把须要的命令包括起来. class Comman…
桥设计模式事实上就是一个简单的has a relationship.就是一个类拥有还有一个类,并使用还有一个类实现须要的功能. 比方遥控器和电视之间能够使用桥设计模式达到能够使用同一个遥控器控制多台电视机的目的. 这种设计思想是多种设计模式反重复复使用基本思想. 细致思考下会发现多种设计模式的底层思想事实上是相通的.只是详细实现或者某些细节.应用等有那么一点区别罢了. 以下就实现一个TV和remoter类,当中的remoter是能够随时更换的. #include <stdio.h> class…
就是利用一个类来完毕多种任务.不用每次都创建一个新类. 个人认为这个设计模式在C++里面,好像能够就使用一个函数取代,利用重复调用这个函数完毕任务和重复利用这个类,好像几乎相同. 只是既然是一个设计模式,那么就使用类来完毕任务.而对于Java来说是不面向过程的.故此就必须使用这个设计模式了. 我这里设计一个仓库来保存这种类.须要的时候重复取出来使用. 很easy的设计模式: #include <stdio.h> class ReusedObject { public: ReusedObject…
适配器设计模式是为了要使用一个旧的接口,或许这个接口非常难用,或许是和新的更新的接口不兼容,所以须要设计一个适配器类,然后就能够让新旧的接口都统一. 就是这种一个图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VuZGVuMjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> 比方我们有这种一个旧的…
这次介绍的设计模式是工厂模式,这是一个比较常见的创建型模式.一般情况下,工厂模式分为三种:简单工厂.工厂方法和抽象工厂,下面慢慢举例介绍下. 简单工厂 考虑一个加密程序的应用场景,一个加密程序可能提供了AES,DES等加密方法,这些加密方式都实现了同一个接口ICipher,它有两个方法分别是 Encript 和 Decript.我们使用加密程序的时候会希望简单的指定加密方式,然后传入原始数据以及必要参数,然后就能得到想要的加密数据.这个功能用简单工厂如何实现呢? 模式结构 简单工厂模式包含一下几…
定义 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例模式.当某些数据只需要在系统中保留一份的时候,可以选择使用单例模式. 饿汉式 饿汉式的实现方式比较简单.在类加载的时候,静态实例就已经创建并初始化好了,所以,实例的创建过程是线程安全的.如果实例占用资源多,按照 fail-fast 的设计原则(有问题及早暴露),那我们也希望在程序启动时就将这个实例初始化好.如果资源不够,就会在程序启动的时候触发报错,我们可以立即去修复.这样也能避免在程序运行一段时间后,突然…