【设计模式】策略模式

概念

行为模式


类图


代码

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;
}
相关推荐
她说..31 分钟前
策略模式+工厂模式实现单接口适配多审核节点
java·spring boot·后端·spring·简单工厂模式·策略模式
老蒋每日coding1 小时前
多智能体系统工作流的设计模式与实现策略
设计模式
HAPPY酷1 小时前
构建即自由:一份为创造者设计的 Windows C++ 自动化构建指南
开发语言·c++·ide·windows·python·策略模式·visual studio
进击的小头3 小时前
设计模式组合应用:智能硬件控制系统
c语言·设计模式
Tom·Ge3 小时前
在macOS上安装OpenClaw并实现Chrome网站自动化测试
chrome·macos·策略模式
小码过河.4 小时前
设计模式——迭代器模式
设计模式·迭代器模式
琹箐16 小时前
设计模式——观察者模式
观察者模式·设计模式
小码过河.20 小时前
设计模式——责任链模式
设计模式·责任链模式
sg_knight1 天前
抽象工厂模式(Abstract Factory)
java·python·设计模式·抽象工厂模式·开发
短剑重铸之日1 天前
《设计模式》第二篇:单例模式
java·单例模式·设计模式·懒汉式·恶汉式