设计模式C++实现笔记

STRATEGY 策略模式(行为模式)

2019-03-07  本文已影响0人  lixin_karl

介绍

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

参与者

Strategy 策略基类
ConcreteStrategy 具体策略
Context 具体使用策略的对象

实现代码

#include <iostream>

class Strategy{//Strategy 策略基类
public:
    virtual void DoStrategy() = 0;
};

class StrategyA:public Strategy{//ConcreteStrategy 具体策略
public:
    void DoStrategy() override
    {
        std::cout<<"使用策略 A"<<std::endl;
    }
};

class StrategyB:public Strategy{//ConcreteStrategy 具体策略
public:
    void DoStrategy() override
    {
        std::cout<<"使用策略 B"<<std::endl;
    }
};

class Context {//Context 具体使用策略的对象
public:
    explicit Context(Strategy *state1)
    {
        state = state1;
    }
    void Work()
    {
        state->DoStrategy();
    }
private:
    Strategy *state;
};

int main()
{
    auto context1 = new Context(new StrategyA());
    context1->Work();
    auto context2 = new Context(new StrategyB());
    context2->Work();
}

输出结果

使用策略 A
使用策略 B

感觉跟状态模式差不多

特点

参考

上一篇 下一篇

猜你喜欢

热点阅读