
设计模式C++
尘世一小猿
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
写在前面
常用的23种设计模式,都是自己找资料整理的,拿出来和大家分享。 创建型: abstract_factory 抽象工厂 builder 建造者模式 factory 简单工厂 prototype原创 2013-12-21 11:27:32 · 495 阅读 · 0 评论 -
factorymethod 工厂方法模式
#include using namespace std; template class Factory { public: Factory():m_pointer(NULL){} Base *create() { if (m_pointer != NULL) return m_pointer; m_pointe原创 2013-12-21 11:47:25 · 582 阅读 · 0 评论 -
flyweight 享元模式
#include #include #include using namespace std; class fly_weight { public: virtual ~fly_weight(){} virtual void operation(const string &state){} string get_state() { return原创 2013-12-21 11:49:01 · 552 阅读 · 0 评论 -
interpreter 解释器模式
#include #include using namespace std; class context { public: context(){} ~context(){} }; class abstract_expression { public: virtual ~abstract_expression(){} virtual void interpr原创 2013-12-21 11:50:02 · 662 阅读 · 0 评论 -
iterator 迭代器模式
#include #include #include using namespace std; class Iterator; typedef int Object; class Interator; class Aggregate { public: virtual ~Aggregate(){} virtual Iterator *CreateIterator() =0原创 2013-12-21 11:51:12 · 699 阅读 · 0 评论 -
memento 备忘录模式
#include #include using namespace std; class memento; class originator { public: typedef string state; originator():_me(NULL){ _me = create_memento(); } originator(const state &st):_st(原创 2013-12-21 11:52:54 · 580 阅读 · 0 评论 -
observer 观察者模式
#include #include #include using namespace std; // subject notify中调用 observer 的update 更新状态 typedef string State; class subject; class observer { public: virtual ~observer(){} virtual void原创 2013-12-21 11:54:07 · 577 阅读 · 0 评论 -
prototype 原型模式
#include #include using namespace std; class Prototype { public: virtual ~Prototype(){} virtual Prototype *clone(string name, int age) =0; virtual void getInfo() =0; virtual void se原创 2013-12-21 11:54:59 · 656 阅读 · 0 评论 -
singleton 单例模式
#include using namespace std; class singleton { public: void method(){ cout <<"singleton::method"<<endl; } //... static singleton *getInstance(); static singleton *instance; private:原创 2013-12-23 08:59:11 · 539 阅读 · 0 评论 -
templete_method 模板方法模式
#include #include using namespace std; class TestPaper { public: virtual ~TestPaper(){} void TestQuestion1() { cout原创 2013-12-23 09:00:03 · 611 阅读 · 1 评论 -
state 状态模式
#include #include using namespace std; /* 1) 将 State声明为 Context的友元类(friend class) ,其作用是让 State模式访问 Context 的 protected接口 ChangeSate() 。 2) State 及其子类中的操作都将 Context*传入作为参数,其主要目的是 State 类可以通 过这个指针调用原创 2013-12-23 08:59:24 · 655 阅读 · 0 评论 -
factory 简单工厂
#include #include #include using namespace std; class IAnimal //工厂创建出的接口 { public: virtual int GetNumberOfLegs() const = 0; virtual void Speak() = 0; virtual void Free() = 0; }; typ原创 2013-12-21 11:45:21 · 644 阅读 · 0 评论 -
facade 外观模式
#include using namespace std; //外观模式 最简单的模式 不需要虚函数 继承等 class foo { public: void show() { cout<<"foo::show()"<<endl; } }; class bar { public: void show() { cout<<"原创 2013-12-21 11:42:30 · 556 阅读 · 0 评论 -
decorator 装饰模式
#include #include using namespace std; class Component { public: virtual ~Component(){} virtual void Operation(){} protected: Component(){}; }; class ConcreteComponent : public Compone原创 2013-12-21 11:41:12 · 581 阅读 · 0 评论 -
mediator 中介者模式
#include #include using namespace std; class country; class united_nation //中介类 { public: virtual ~united_nation(){} virtual void declare(const string &message, country *colleague) =0; };原创 2013-12-21 11:52:05 · 512 阅读 · 0 评论 -
proxy 代理模式
#include #include using namespace std; class Subject { public: virtual ~Subject(){}; virtual void Request() = 0; }; class ConcreteSubject : public Subject { public: ConcreteSubject(){}原创 2013-12-21 11:56:46 · 606 阅读 · 0 评论 -
visitor 访问者模式
#include #include #include using namespace std; class element; class visitor { public: visitor(string name): _name(name){} virtual ~visitor(){} virtual void visit_concrete_elementA(ele原创 2013-12-21 12:05:21 · 640 阅读 · 0 评论 -
abstract_factory抽象工厂
#include #include #include using namespace std; template class abstract_factory { public: virtual ~abstract_factory(){} virtual Base *create() =0; }; template class fa原创 2013-12-21 11:29:57 · 676 阅读 · 0 评论 -
adapter适配器模式
#include #include using namespace std; class target { public: target(){} virtual ~target(){} virtual void request() { cout<< "target::request()" <<endl; } }; class ada原创 2013-12-21 11:32:33 · 490 阅读 · 0 评论 -
bridge桥接模式
#include #include using namespace std; class abstraction_imp { public: virtual ~abstraction_imp(){} virtual void operation() =0; }; class abstraction { public: virtual ~abstraction(){}原创 2013-12-21 11:33:50 · 648 阅读 · 0 评论 -
builder建造者模式
#include #include #include using namespace std; class Product { public: void add(string part) { lst.push_back(part); } void show() { for (list::iterator it = l原创 2013-12-21 11:34:49 · 625 阅读 · 0 评论 -
chain_of_responsibility责任链模式
#include using namespace std; class handle { public: handle():_suc(NULL){} virtual ~handle(){} void set_successor(handle *suc) { _suc = suc; } handle *get_successor()原创 2013-12-21 11:35:54 · 646 阅读 · 0 评论 -
command命令模式
#include using namespace std; class reciver //执行者 { public: void action() { cout<< "reciver::action()"<<endl; } }; class command //命令 { public: command(reciver *rec):_rec(re原创 2013-12-21 11:37:42 · 923 阅读 · 0 评论 -
composite 组合模式
#include #include #include using namespace std; class component { public: virtual ~component(){} virtual void operation() =0; virtual void add(component *) =0; virtual void remove原创 2013-12-21 11:39:20 · 744 阅读 · 0 评论 -
strategy 策略模式
#include using namespace std; class travel{ public: virtual void travel_method() = 0; virtual ~travel(){} }; class travel_with_plane:public travel{ public: void travel_method(){原创 2013-12-23 08:59:45 · 635 阅读 · 0 评论