![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
.faith
別把秘密告訴風,風會吹過整個森林
展开
-
Template Method
#include <iostream>using namespace std;class Computer{public: void run(){ enterKBC(); enterBIOS(); enterSystem(); showLogo(); } virtual ~Comput...原创 2019-08-29 09:58:36 · 64 阅读 · 0 评论 -
Adapter
#include <iostream>using namespace std;class A{public: virtual void Request() = 0; virtual ~A(){}};class ConcreteA1 : public A{public: void Request() override{ cout...原创 2019-09-05 16:09:23 · 66 阅读 · 0 评论 -
Mediator
#include <iostream>using namespace std;class Mediator;//抽像交互类class Person{public: Person(Mediator * mediator) : m_pMediator(mediator){} virtual ~Person(){} virtual void se...原创 2019-09-06 10:13:27 · 109 阅读 · 0 评论 -
State
#include <iostream>using namespace std;class Context;class State{public: virtual void doOperation(Context * context) = 0; virtual ~State(){}};class Context{public: Contex...原创 2019-09-06 11:34:59 · 111 阅读 · 0 评论 -
Memento
#include <iostream>using namespace std;typedef struct{ int information1; string information2; string information3;}MementoInformation;class Memento{public: Memento(){}...原创 2019-09-06 13:53:06 · 98 阅读 · 0 评论 -
Composite
#include <iostream>#include <list>using namespace std;class Component{public: virtual ~Component(){} virtual void process() = 0;};class Leaf : public Component{public: ...原创 2019-09-06 15:49:30 · 131 阅读 · 0 评论 -
ChainOfResponsibility
#include <iostream>using namespace std;enum Level{ Level_One = 1, Level_Two, Level_Three, Level_Four };class LevelRequest{public: LevelRequest(LevelRequest * levelRequest) : m_levelR...原创 2019-09-06 16:36:37 · 64 阅读 · 0 评论 -
Iterator
#include <iostream>using namespace std;template<typename T>class Iterator{public: virtual ~Iterator(){} virtual void first() = 0; virtual void next() = 0; virtual bo...原创 2019-09-07 16:22:03 · 62 阅读 · 0 评论 -
Command
#include <iostream>#include <vector>#include <string>using namespace std;class Receiver{public: virtual ~Receiver(){} virtual void action() = 0;};class Receive1 : ...原创 2019-09-07 16:58:46 · 107 阅读 · 0 评论 -
Visitor
#include <iostream>using namespace std;class ElementA;class ElementB;class Visitor{public: virtual ~Visitor(){} virtual void visitElementA(ElementA & element) = 0; virt...原创 2019-09-07 17:54:04 · 121 阅读 · 0 评论 -
Proxy
#include <iostream>using namespace std;class A{public: virtual void Request() = 0; virtual ~A(){}};class ConcreteA1 : public A{public: void Request() override{ cout...原创 2019-09-05 15:23:33 · 150 阅读 · 0 评论 -
Facade
#include <iostream>using namespace std;class SubSystem1{public: void operation(){ cout<<"SubSystem1 Operation"<<endl; }};class SubSystem2{public: void operation(){ ...原创 2019-09-05 14:23:48 · 116 阅读 · 0 评论 -
Flyweight
#include <iostream>#include <map>using namespace std;class Flyweight{public: Flyweight(const string & extrinsicState) : m_extrinsicState(extrinsicState){} virtual void setI...原创 2019-09-05 13:39:25 · 206 阅读 · 0 评论 -
Strategy Method
/* * 将算法独立于使用的客户端,避免出现大量的if else语句*/#include <iostream>using namespace std;class Algorithm{public: virtual void doAlgorithm() = 0; virtual ~Algorithm(){ }};class Algorithm...原创 2019-08-30 10:06:10 · 122 阅读 · 0 评论 -
Observer/Event
/* * 当一个对象的状态发生改变时,所有依赖于它的对象都要得到通知并更新*/#include <iostream>#include <memory>#include <list>using namespace std;class Observer{public: virtual void response() = 0;//观察者根...原创 2019-08-30 11:29:17 · 71 阅读 · 0 评论 -
Decorator
#include <iostream>using namespace std;class Phone{public: virtual void call() { } virtual ~Phone(){}};class ApplePhone : public Phone{public: void call() override{ cout&l...原创 2019-09-03 15:32:06 · 49 阅读 · 0 评论 -
Bridge
#include <iostream>using namespace std;class Implementor{public: virtual void OperationImp() = 0; virtual ~Implementor(){}};class ConcreteImplementorA : public Implementor{publ...原创 2019-09-03 20:02:57 · 68 阅读 · 0 评论 -
Factory Method
#include <iostream>using namespace std;class Product{public: virtual void doSomething() = 0; virtual ~Product(){}};class ProductA : public Product{public: void doSomething...原创 2019-09-04 09:43:48 · 53 阅读 · 0 评论 -
Abstract Factory
#include <iostream>using namespace std;class Box{//抽象包装盒public: virtual const string BoxName() = 0; virtual ~Box(){}};class Computer{//抽象电脑public: virtual const string Co...原创 2019-09-04 12:02:48 · 78 阅读 · 0 评论 -
Prototype
#include <iostream>using namespace std;class Clone{public: virtual Clone * clone() = 0; virtual ~Clone(){}};class Clone1 : public Clone{public: Clone1(int id, string name) ...原创 2019-09-04 13:53:38 · 105 阅读 · 0 评论 -
Builder
#include <iostream>using namespace std;class TextConverter{public: virtual void ConvertCharacter() = 0; virtual void ConvertFontChange() = 0; virtual ~TextConverter(){}};cl...原创 2019-09-04 15:45:12 · 108 阅读 · 0 评论 -
Singleton
#include <iostream>using namespace std;class Singleton{public: static Singleton * Instance(); void operate(){ cout<<"One Operate"<<endl; }private: //私有化构造函数 Si...原创 2019-09-05 10:00:37 · 162 阅读 · 0 评论 -
Interpret
#include <iostream>#include <map>#include <stack>using namespace std;class Expression{public: virtual int interpret(map<char, int>var) = 0; virtual ~Expression(...原创 2019-09-07 18:31:04 · 637 阅读 · 0 评论