随笔分类 - 设计模式(c++实现)
摘要:状态模式原理:随着状态的变化,对象的行为也发生变化代码如下:#include #include #include using namespace std;class War;class State{public: virtual void fire(War *war) { }};class War{public: War(State* state):m_state(state),m_day(0){} void Setday(int day) { m_day = day; } int Getday() { return m_day; } void SetState(State *stat...
阅读全文
摘要:观察者模式原理:当有新的消息产生时发送给观察者,和中介者模式的不同地方是中介者模式强调中介的作用以及中介双方的交互,观察者模式是主动调用观察者成员函数进行消息发送。代码如下:#include #include #include using namespace std;class Observer{public: virtual void Update() { }};class Blog{public: void attach(Observer *pobserver) { m_listObserver.push_back(pobserver); } void remove(Observe...
阅读全文
摘要:策略模式原理:策略模式和简单工厂模式有点类似,只是简单工厂模式产生的是对象,策略模式产生的是根据对象产生的算法。代码如下:#include #include #include using namespace std;enum CACHE{FIFO,LRU,RANDOM};class ReplaceAlgorithm{public: virtual void replace(){}};class FIFOAlgorithm:public ReplaceAlgorithm{public: virtual void replace(){cout replace(); }private: Replac
阅读全文
摘要:备忘录模式原理:将对象的私有数据存储在其他地方,以便重新加载代码如下:#include #include #include using namespace std;class GameRole;class Memeno{public: Memeno(int vitality = 0,int defense = 0,int attack = 0): m_vitality(vitality),m_defense(defense),m_attack(attack){} void show() { cout m_vecMemeno;};int main(){ GameRole role; Meme..
阅读全文
摘要:中间者模者模式原理:中介者维持所有要交互对象的指针或者对象,所有对象维持一个中介者的指针或者对象。#include #include using namespace std;class Mediator;class Person{public: virtual GetMessage(string message) { } virtual void SendMessage(string message) { } virtual void SetMediator(Mediator *pmdiator) { }protected: Mediator *m_pmediator; };class M..
阅读全文
摘要:#include #include using namespace std;class Receiver{public: void do_execute() { cout do_execute();}private: Receiver *m_preceiver;};int main(){ Command *pcmd = new Command(); pcmd->execute(); return 0;}
阅读全文
摘要:职责链模式原理:职责链模式和装饰模式以及组合模式类似的地方是都维持着指向父类的指针,不同点是职责链模式每个子类都继承父类的指针及每个之类都维持着指向父类的指针,而组合模式与装饰模式是组合类鱼装饰类维持着指向父类的指针。代码如下:#include #include using namespace std;class Manager{public: Manager(string name,Manager* pmanager = NULL):m_name(name),m_pmanager(pmanager){} virtual void dealSalary(string name,int num.
阅读全文
摘要:只能指针是代理模式的一种:智能指针实现需要注意的问题:1.构造函数指明显示构造。2.拷贝构造函数,先断开前一个指针,然后用之前指针的值初始化现在的指针。3.赋值函数需要先断开之前的指针,然后释放现在指针指向的内存,最后用之前的指针赋值现在的指针。4.参数是引用,避免产生临时对象。代码如下:#include #include /************************************************************************//* 代理模式的智能指针的实现 *//*********************************...
阅读全文
摘要:#include #include #include #include using namespace std;enum COLOR{WHITE,BLACK};/************************************************************************//* 装饰模式的作用是为对象增加属性 *//************************************************************************/struct PiecePos{ int x; int y; PiecePos(in...
阅读全文
摘要:外观模式原理:将复杂的子系统的结构封装起来,只提供客户一个简单的接口代码如下:#include #include #include using namespace std;/************************************************************************//* 装饰模式的作用是为对象增加属性 *//************************************************************************/class Scanner{public: void Scan(){co...
阅读全文
摘要:装饰模式原理:给对象增加特性,这种特性是一种累加的效果代码如下#include #include #include using namespace std;/************************************************************************//* 装饰模式的作用是为对象增加属性 *//************************************************************************/class Phone{public: Phone(string name):m_nam...
阅读全文
摘要:组合模式原理:组合模式的作用是讲继承同一父类的不同子类对象组合起来,形成一个树形的结构,例如公司的部门组织代码如下#include #include #include using namespace std;/************************************************************************//* 组合模式的作用是讲继承同一父类的不同子类对象组合起来 *//************************************************************************/...
阅读全文
摘要:桥接模式与原理:将抽象部分与实现部分分离,使它们都可以独立的变化。最终的结果表现在实现类中。两者之间属于等价关系,即实现部分和抽象部分可以相互交换。代码如下#include using namespace std;class OS{public: virtual void install() { }};class WindowsOS:public OS{public: virtual void install() { cout install(); }private:};class ComputerApple:public Computer{public: virtual void im...
阅读全文
摘要:适配器模式原理:适配器模式属于结构型模式,主要作用是完成功能的转换,1.通过一个类继承目标类。2.需要适配的类3.适配器代码如下:#include using namespace std;class Deque{public: void push_back(int x) { cout << "push from back of Deque" <<endl; } void pop_back() { cout << "pop from back of Deque" <<endl; } void push_fro
阅读全文
摘要:建造者模式原理:建造模式主要是用于产生对象的各个组成部分,而抽象工厂模式则用于产生一系列对象,建造者模式而且要求这些对象的组成部分有序。代码如下:#include using namespace std;class Builder{public: virtual void buildHead(){} virtual void buildBody(){} virtual void buildLeftArm(){} virtual void buildRightArm(){} virtual void buildLeftLeg(){} virtual void buildRightLeg(){}}
阅读全文
摘要:设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类代码如下:#include #include #include using namespace std;#define COREA 0#define COREB 1class Core{public: virtual void show(){}};class CoreA:public Core{public: virtual void show() { cout create(0); pcore->show(); return 0;}工厂方法模式原理:
阅读全文
摘要:原理:拷贝自身对象实际上就是调用的拷贝构造函数,注意事项是这里的拷贝是深拷贝,即需要拷贝指针所指的内容#include #include #include class Resume{public: virtual Resume* Clone(){return NULL;} virtual ~Resume(){}protected: char *name;};class ResumeA:public Resume{public: ResumeA(const char* str); Resume* Clone(); ResumeA(const ResumeA& r); ~ResumeA()
阅读全文
摘要:原理:将类的构造函数由pubic变为private或者protect,添加获取对象的public 成员函数,返回指向对象的静态指针。首先来一段简单的代码实现代码一class Singleton{public:static Singleton* instance(){ if (pInstance == NULL) { return new Singleton(); } return pInstance;}protected: Singleton() { }private: static Singleton* pInstance;};Singleton* Singleton::pInstance.
阅读全文

浙公网安备 33010602011771号