策略模式
策略模式定义了一系列的算法,并将每个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
策略模式定义了一系列的算法,并将每个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 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....
将复杂的子系统抽象到同一个接口进行管理,外界只需要通过此接口与子类系统进行交互,而不必直接与复杂的子类系统进行交互 案例:家庭影院外观模式 实现KTV模式:电视打开,灯关掉,音响打开,麦克风打开,DVD打开 实现游戏模式:电视打开,音响打开,游戏机打开
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。