观察者模式
观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者。
观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者。
将一个请求封闭为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。 命令模式可以将请求者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求
策略模式定义了一系列的算法,并将每个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 class TemplateDrink{ public: virtual void boilWater() = 0; virtual void drew() = 0; virtual void pourCup() = 0; virtual void addSomething() = 0; void make(){ boilWater(); drew(); pourCup(); addSomething(); } }; class Tea : public TemplateDrink{ public: void boilWater() override{ cout << "煮山泉水..." << endl; } void drew() override{ cout << "冲龙井茶..." << endl; } void pourCup() override{ cout << "倒入茶杯中..." << endl; } void addSomething() override{ cout << "加点柠檬....
有一个已经写好的接口,但是不符合需求,适配器就是将已有的接口转化为需要的形式 class MyPrint{ public: void operator()(int a, int b){ cout << a + b << endl; } }; class TargetInterface{ public: virtual void operator()(int v) = 0; }; class MyAdaptor : public TargetInterface{ public: MyAdaptor(int param):param(param){} void operator()(int v){ print(v, param); } private: MyPrint print; int param; }; MyAdaptor myBind2nd(int v){ return MyAdaptor(v); } int main() { vector<int> v; for(int i = 0; i < 10; ++i){ v.push_back(i); } for_each(v.begin(), v....