设计模式-策略模式

设计模式-策略模式

  • 前言
  • 策略模式

前言

由于作者做的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;
public:
    explicit Context(std::unique_ptr s) : strategy(std::move(s)) {}
    
    void setStrategy(std::unique_ptr s) {
        strategy = std::move(s);
    }
    
    void executeStrategy() const {
        if(strategy) {
            strategy->execute();
        }
    }
};

策略模式的核心思想时将一些定义算法族分别封装起来(封装成不同的策略),然后使用者(Context类)可以动态的指定不同的算法。

你可能感兴趣的:(设计模式-策略模式)