C++与设计模式
BIG_C_GOD
这个作者很懒,什么都没留下…
展开
-
C++与设计模式(7)——外观模式
外观模式:为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单来说就是当系统非常复杂时,由我们来提供一个简单的接口供用户使用,让用户无需关注其中的实现。class Keys{public: void keyFront(){cout << "→";} void keyBack(){cout << "←";} voi原创 2016-11-04 10:38:01 · 431 阅读 · 0 评论 -
C++与设计模式(4)——单例模式
单例模式单例模式是指在一个项目中用来创建独一无二的,只能够有一个实例的对象。经典实现class Singleton {public: static Singleton* getInstance(); //析构的时候释放资源~ ~Singleton() { if((singleton != NULL) delete singleton;原创 2016-10-29 21:35:49 · 481 阅读 · 0 评论 -
C++与设计模式(14)——职责链模式
职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系让我来描述的话就是,现在我们有很多的对象可以处理一个事件,但这个事件的拥有者并不需要认识所有处理它事件的对象,这个时候就需要责任链模式来解决。 比如需要向公司请假,一天的假期只需要向组长申请就可以了,而一周甚至更长的假期则需要上级领导的批准。把这个例子写成代码:class Manager{public:原创 2016-12-03 19:29:46 · 578 阅读 · 0 评论 -
C++与设计模式(12)——备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态这里以棋子坐标为例,通过ChessMemento来保存ChessMan的信息,并通过ChessCaretaker进行管理来实现悔棋和撤销等操作。class ChessMemento{public: ChessMemento():m_x(0),m_y(0),m_str(""原创 2016-11-18 19:42:23 · 621 阅读 · 0 评论 -
C++与设计模式(10)——桥接模式
桥接模式 定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化这种说法可能不太好理解,那我们有另一种说法,桥接模式是将复杂变化的多个维度分开,通过组合的形式进行联系。举个例子,现在我们要写一个绘图设备(类),它可以画不同颜色不同形状的图形: 先想一个简单的实现,我们的设备拥有绘制所有这些图形的接口: 我们可以发现这么做的话我们的设备的接口会变得非常之多,难以维护和管理,接口内原创 2016-11-14 21:00:59 · 588 阅读 · 0 评论 -
C++与设计模式(11)——装饰模式
装饰模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 装饰模式注重功能的拓展,增加了类的组合,减少了类之间的继承,而多个装饰类进行排练组合,可以创造出不同行为的组合。//穿衣服的人class People{public: virtual void showClothes() = 0;};class Someone : public People原创 2016-11-17 14:54:49 · 443 阅读 · 0 评论 -
C++与设计模式(6)——建造者模式
建造者模式建造者模式主要负责把一个复杂对象的构造与其表现分离,与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。 《大话设计模式》中有一个例子——建造小人,一共需建造6个部分,头部、身体、左右手、左右脚。class Builder { public: virtual void BuildHead() {} virtual void BuildBod原创 2016-11-01 18:04:27 · 381 阅读 · 0 评论 -
C++与设计模式(5)——原型模式
原型模式看这个模式的第一感觉,这并不是一个高大上的设计模式,而是规范化代码的一个小技巧。原型模式是通过指定实例,通过拷贝来创建新的对象。在C++中,原型模式是通过提供clone接口和重写拷贝构造函数(深拷贝)来实现的。class prototype{public: prototype(){} virtual ~prototype(){} virtual prototype原创 2016-10-31 11:40:18 · 495 阅读 · 0 评论 -
C++与设计模式(3)——适配器模式
适配器模式适配器模式指通过把接口转换成用户需要的接口,来让原本由于接口不兼容而不能一起工作的那些类可以一起工作。 举个简单的例子,在STL中实际上只提供了双端队列(deque)的数据结构,而栈(stack)和队列(queue)都是通过适配器模式来转换双端队列(deque)的接口来实现的。class Deque{public: void push_back(int x){} vo原创 2016-10-29 12:59:00 · 506 阅读 · 1 评论 -
C++与设计模式(9)——享元模式
享元模式 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。围棋游戏与享元模式说道享元模式,最经典的例子就是围棋了,我们都知道,围棋中有许多棋子,每个棋子都有它们各自的信息:en原创 2016-11-09 16:49:55 · 505 阅读 · 0 评论 -
C++与设计模式(2)--策略模式
策略模式策略模式是指提供接口,让用户使用可替换的算法。enum ALG {first, second, third}; //标签 //抽象接口 class Algorithm { public: virtual void alg() = 0; }; //三种具体的替换算法 class Algorithm1 : public Algorithm { pu原创 2016-10-27 22:11:54 · 493 阅读 · 0 评论 -
C++与设计模式(1)--工厂模式
前言在说设计模式之前先声明很重要的一点 不要滥用设计模式工厂模式工厂模式主要特点是需要在工厂类中做判断,从而创造相应的产品。作为创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。简单工厂模式举个例子,一家汽车公司生产两种型号的汽车:A型车和B型车,现在公司只有一个工厂来生产汽车,公司直接告诉工厂要生产哪种汽车:enum TYPE{CARA,CARB};//汽车类class原创 2016-10-27 15:48:28 · 466 阅读 · 0 评论 -
C++与设计模式(8)——代理模式
代理模式 为其他对象提供一种代理以控制对这个对象的访问代理模式有这几种分类: 1. 远程代理(Remote Proxy)为一个位于不同的地址空间的对象提供一个本地的代理对象。这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又叫做大使(Ambassador) 2. 虚拟代理(Virtual Proxy)根据需要创建开销很大的对象。如果需要创建一个资源消耗较大的对象,先原创 2016-11-06 21:42:25 · 461 阅读 · 0 评论 -
C++与设计模式(13)——中介者模式
用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。中介者模式的意义现在在我们的程序中有很多共同工作的类: 假如它们之间互相关联,在这样的情况下,如果要修改B类,那么也会对ACD类产生影响,而对于中介者模式: 可以修改任意一个类而只对中介类产生影响。 这就是中介者模式的意义:将一个复杂的网状的类的结构转换为简单的原创 2016-11-24 19:54:45 · 593 阅读 · 0 评论