![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式C++
尘世一小猿
这个作者很懒,什么都没留下…
展开
-
写在前面
常用的23种设计模式,都是自己找资料整理的,拿出来和大家分享。创建型:abstract_factory 抽象工厂builder 建造者模式factory 简单工厂prototype原创 2013-12-21 11:27:32 · 461 阅读 · 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 · 537 阅读 · 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 · 511 阅读 · 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 · 607 阅读 · 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 · 657 阅读 · 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 · 534 阅读 · 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 · 529 阅读 · 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 · 615 阅读 · 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 · 499 阅读 · 0 评论 -
templete_method 模板方法模式
#include #include using namespace std;class TestPaper{public: virtual ~TestPaper(){} void TestQuestion1() { cout原创 2013-12-23 09:00:03 · 566 阅读 · 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 · 611 阅读 · 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 · 587 阅读 · 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 · 520 阅读 · 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 · 530 阅读 · 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 · 480 阅读 · 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 · 566 阅读 · 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 · 595 阅读 · 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 · 623 阅读 · 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 · 461 阅读 · 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 · 607 阅读 · 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 · 589 阅读 · 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 · 605 阅读 · 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 · 863 阅读 · 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 · 643 阅读 · 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 · 589 阅读 · 0 评论