策略模式

定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

class Light{
public:
    void on()
    {
        cout << "Light on !" << endl;
    }

    void off()
    {
        cout << "Light off !" << endl;
    }
};
//命令类
class Command{
public:
    virtual ~Command(){}
    virtual void execute(){}
};
//具体命令类
class LigthOnCommand : public Command
{
public:
    LigthOnCommand(Light* lig):light(lig){}
    //execute方法
    void execute()
    {
        light->on();
    }
private:
    Light *light;
};
class LigthOffCommand : public Command{
public:
    LigthOffCommand(Light *lig):light(lig){}
    //execute方法
    void execute()
    {
        light->off();
    }
private:
    Light *light;
};
//遥控器类
class RemoteControl{
public:
    void SetCommand(Command *cmd)
    {
        slot = cmd;
    }
    void buttonOn()
    {
        slot->execute();
    }
private:
    Command *slot;
};

int main()
{
    RemoteControl lightOnControl;
    RemoteControl lightOffControl;
    Command *onCommand = new LigthOnCommand(new Light());
    Command *offCommand = new LigthOffCommand(new Light());
    lightOnControl.SetCommand(onCommand);
    lightOffControl.SetCommand(offCommand);
    lightOnControl.buttonOn();
    lightOffControl.buttonOn();

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二十三种设计模式 - 策略模式 策略模式简介 模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个...
    JustTheSame阅读 1,850评论 2 16
  • 1.初识策略模式 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户...
    王侦阅读 1,494评论 0 3
  • 1. 简介 策略(Strategy)模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略...
    LeeLeCoder阅读 566评论 0 1
  • 设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...
    leehoo阅读 12,760评论 14 50
  • 【学习难度:★☆☆☆☆,使用频率:★★★★☆】直接出处:策略模式梳理和学习:https://github.com/...
    BruceOuyang阅读 1,527评论 3 5