设计模式-策略模式
- 前言
- 策略模式
前言
由于作者做的C++开发比较多所以本文实例都以C++语言方式给出。
策略模式
// 具体策略A
class ConcreteStrategyA : public Strategy {
public:void execute() const override {std::cout << "Executing Strategy A\n";}
};// 具体策略B
class ConcreteStrategyB : public Strategy {
public:void execute() const override {std::cout << "Executing Strategy B\n";}
};// 上下文类
class Context {
private:std::unique_ptr<Strategy> strategy;
public:explicit Context(std::unique_ptr<Strategy> s) : strategy(std::move(s)) {}void setStrategy(std::unique_ptr<Strategy> s) {strategy = std::move(s);}void executeStrategy() const {if(strategy) {strategy->execute();}}
};
策略模式的核心思想时将一些定义算法族分别封装起来(封装成不同的策略),然后使用者(Context类)可以动态的指定不同的算法。