策略模式: #include <iostream> using namespace std; class Strategy { public: virtual int AlgorithemInterface() = 0; }; class StrategyA:public Strategy { int AlgorithemInterface() { cout << "StrategyA的算法实现"; return 1; } }; class StrategyB:public Strategy { int AlgorithemInterface() { cout << "StrategyB的算法实现"; return 1; } }; class Context { public: Strategy* mStrategy; Context(Strategy* a) { mStrategy = a;} int ContextInterface() { mStrategy->AlgorithemInterface(); return 1; } }; int main() { Context test(new StrategyB); test.ContextInterface(); return 1; } 装饰模式: #include <iostream> using namespace std; class Component { public: virtual int Operation() = 0; }; class ConcretComponent:public Component { public: int Operation() { cout << "基本组建实现具体操作/n"; return 1; } }; class Decorator:public Component { public: Component* mComponent; int SetComponet(Component* a) { mComponent = a; return 1; } int Operation() = 0 { mComponent->Operation(); return 1; } }; class ConcretDecoratorA:public Decorator { string state; public: int Operation() { state = "新状态"; Decorator::Operation(); cout << "ConcretDecoratorA获得了新状态,并且调用了包含组建的操作/n"; return 1; } }; class ConcretDecoratorB:public Decorator { public: int Operation() { Decorator::Operation(); cout << "ConcretDecoratorB进行了行为操作,并且调用了包含组建的操作/n"; Behavior(); return 1; } int Behavior() { cout << "ConcretDecoratorB的自身行为操作/n"; return 1; } }; int main() { ConcretComponent a; ConcretDecoratorA b; b.SetComponet(&a); b.Operation(); ConcretDecoratorB c; c.SetComponet(&b); c.Operation(); return 1; } 代理模式: #include <iostream> using namespace std; class Subject { public: virtual int Request() = 0; }; class RealSubject:public Subject { public: int Request() { cout << "真正的请求"; return 1; } }; class Proxy:public Subject { RealSubject *a; public: Proxy(RealSubject *b) { a = b; } int Request() { if(a==NULL) { cout << "没有初始化主体"; return 0; } a->Request(); return 1; } }; int main() { RealSubject a; Proxy b(&a); b.Request(); return 1; }