【设计模式】策略模式

概念

行为模式


类图


代码

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;
}
相关推荐
Momentary_SixthSense2 天前
设计模式之工厂模式
java·开发语言·设计模式
Java码农也是农2 天前
Multi-Agent 系统设计模式
设计模式·agent·multi-agent
sg_knight2 天前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
workflower2 天前
深度学习是通用型人工智能的基础
人工智能·深度学习·设计模式·软件工程·软件构建·制造
Meme Buoy2 天前
11.3设计模式-新
设计模式
cmpxr_2 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
x-cmd2 天前
macOS 内存模型深度解析 | x free 设计哲学
linux·macos·内存·策略模式·free·x-cmd
互联网散修2 天前
零基础鸿蒙应用开发第二十九节:策略模式重构电商促销系统
重构·策略模式·鸿蒙零基础入门
无籽西瓜a2 天前
【西瓜带你学设计模式 | 第十五期 - 策略模式】策略模式 —— 算法封装与动态替换实现、优缺点与适用场景
java·后端·设计模式·软件工程·策略模式
Kel3 天前
Claude Code 架构深度剖析:从终端输入到大模型响应的完整过程
人工智能·设计模式·架构