【设计模式】策略模式

概念

行为模式


类图


代码

cpp 复制代码
#include <iostream>

using namespace std;

class Strategy {
public:
    ~Strategy() = default;
    virtual int Execute(int a, int b) = 0;
};

class ConcreteStrategyAdd : public Strategy {
    int Execute(int a, int b) override {
        return a + b;
    }
};

class ConcreteStrategySubtract : public Strategy {
    int Execute(int a, int b) override {
        return a - b;
    }
};

class ConcreteStrategyMultiply : public Strategy {
    int Execute(int a, int b) override {
        return a * b;
    }
};

class Context {
public:
    void SetStrategy(Strategy* s) {
        strategy = s;
    }

    int ExecuteStrategy(int a, int b) {
        return strategy->Execute(a, b);
    }

private:
    Strategy* strategy;
};

int main(int argc, char *argv[]) {
    auto context = new Context();
    int a = 10, b = 25;

    string action = "add";
    if (action == "add") {
        context->SetStrategy(new ConcreteStrategyAdd());
    } else if (action == "subtraction") {
        context->SetStrategy(new ConcreteStrategySubtract());
    } else if (action == "multiplication") {
        context->SetStrategy(new ConcreteStrategyMultiply());
    } else {
        cout << "Wops! Error Action." << endl;
        return -1;
    }

    cout << context->ExecuteStrategy(a, b) << endl;

    delete context;

    return 0;
}
相关推荐
乐悠小码1 天前
Java设计模式精讲---02抽象工厂模式
java·设计模式·抽象工厂模式
乙己4071 天前
设计模式——原型模式(prototype)
设计模式·原型模式
⑩-1 天前
浅学Java-设计模式
java·开发语言·设计模式
攻心的子乐1 天前
软考 关于23种设计模式
java·开发语言·设计模式
成钰1 天前
设计模式之单例模式:一个类就只有一个实例
单例模式·设计模式
o0向阳而生0o1 天前
110、23种设计模式之状态模式(19/23)
设计模式·状态模式
_院长大人_1 天前
设计模式-单例模式
单例模式·设计模式
崎岖Qiu2 天前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
安冬的码畜日常2 天前
【JUnit实战3_27】第十六章:用 JUnit 测试 Spring 应用:通过实战案例深入理解 IoC 原理
spring·观察者模式·设计模式·单元测试·ioc·依赖注入·junit5
她说彩礼65万2 天前
C#设计模式 单例模式实现方式
单例模式·设计模式·c#