设计模式 策略模式2 c++11

本文介绍了一种通过函数绑定来实现不同算法选择的方法。利用C++标准库中的`std::function`,可以灵活地在运行时选择执行加法或减法操作。这种方式避免了使用策略类指针的传统做法,使得代码更加简洁高效。

根据需求的不同 选择不同的策略算法

之前是保存的各种策略类的指针

这里直接使用 function  bind 选择对应的算法

代码

// 005.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <functional>
#include <iostream>

using namespace std;




int MyAdd(int a, int b) { return a + b; }

class MyMinus {
public:
    int operator()(int a, int b) {
        return a - b;
    }
};

class binary_operators {
public:
    typedef std::function<int(int, int)> FUNC;
    binary_operators(FUNC f,int a, int b) :func_(f),left(a), right(b),result(0) {}
    int GetResult() { return func_(left, right); }
private:
    std::function<int(int, int)> func_;
    int left;
    int right;
    int result;
};

int main()
{
    binary_operators addOperation(std::function<int(int, int)>(MyAdd),1,2);
    binary_operators minusOperation(std::function<int(int, int)>(MyMinus()), 5, 7);
    
    std::cout << "addOperation(1,2) result: " << addOperation.GetResult() << std::endl;
    std::cout << "minusOperation(5,7) result: " << minusOperation.GetResult() << std::endl;
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/itdef/p/7457016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值