摘要:
意图:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。class Visitor;class Element{public: Element() {} virtual ~Element() {} virtual void Accept(Visitor* visitor) = 0;};class Visitor{public: Visitor() {} virtual ~Visitor() {} virtual void VisitElementA(Element* elemen... 阅读全文
摘要:
意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。class Receiver{public: Receiver() {} virtual ~Receiver() {} virtual void Action() { cout<<"Receiver::Action()"<<endl; }};class Command{public: Command() {} virtual ~Command() {} virtual void Execut... 阅读全文
摘要:
意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。class Iterator{public: Iterator() {} virtual ~Iterator() {} virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() = 0; virtual string CurrentItem() = 0;};class Aggregate{public: Aggregate() {} virtual ~Aggre... 阅读全文
摘要:
意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。class Strategy{public: Strategy() {} virtual ~Strategy() {} virtual void AlgorithmInterface() = 0;};class ConcreteStrategyA: public Strategy{public: ConcreteStrategyA() {} ~ConcreteStrategyA() {} void AlgorithmInte... 阅读全文
摘要:
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。class Context;class State{public: State() {} virtual ~State() {} virtual void Operation(Context* context) = 0;};class ConcreteStateA: public State{public: ConcreteStateA() {} ~ConcreteStateA() {} void Operation(Context* context);};... 阅读全文
摘要:
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。class Subject;class Observer{public: Observer() {} virtual ~Observer() {} virtual void Update(Subject* subject) = 0;};class Subject{public: Subject():subject_state(0), observers() {} virtual ~Subject() {} int GetSt... 阅读全文