设计模式 策略模式2 c++11
根据需求的不同 选择不同的策略算法
之前是保存的各种策略类的指针
这里直接使用 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() {}
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),,);
binary_operators minusOperation(std::function<int(int, int)>(MyMinus()), , ); std::cout << "addOperation(1,2) result: " << addOperation.GetResult() << std::endl;
std::cout << "minusOperation(5,7) result: " << minusOperation.GetResult() << std::endl;
return ;
}
设计模式 策略模式2 c++11的更多相关文章
- 15. 星际争霸之php设计模式--策略模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- [.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型)
[.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型) 1,策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它 ...
- linkin大话设计模式--策略模式
linkin大话设计模式--策略模式 Strategy [ˈstrætədʒi] 策略 策略模式用于封装系列的算法,这些算法通常被封装在一个称为Context的类中,客户端程序可以自由的选择任何一种 ...
- [.net 面向对象程序设计深入](26)实战设计模式——策略模式 Strategy (行为型)
[.net 面向对象程序设计深入](26)实战设计模式——策略模式 Strategy (行为型) 1,策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模 ...
- 设计模式-策略模式(Strategy Model)
1.概述 在开发过程中常常会遇到类似问题,实现一个功能的时候往往有多种算法/方法(策略),我们可以根据环境的不同来使用不同的算法或策略来实现这一功能. 如在人物比较排序的实现中,我们有 ...
- java设计模式 策略模式Strategy
本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...
- [Head First设计模式]策略模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- javascript 设计模式-----策略模式
在<javascript设计模式>中,作者并没有向我们介绍策略模式,然而它却是一种在开发中十分常见的设计模式.最常见的就是当我们遇到一个复杂的表单验证的时候,常常需要编写一大段的if和el ...
- JAVA 设计模式 策略模式
用途 Title 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 策略模式是一种行为型模式. 结构
随机推荐
- 【Python】断言功能Assertion
转自 https://www.cnblogs.com/cicaday/p/python-assert.html Python Assert 为何不尽如人意 Python中的断言用起来非常简单,你可以在 ...
- SpringBoot项目单元测试
关于SpringBoot的单元测试,描述一下三种单元测试的方式. 1.约定 单元测试代码写在src/test/java目录下单元测试类命名为*Test,前缀为要测试的类名 2. 使用mock方式单元测 ...
- is,as,类库
is和as运算符: 所有类型的基类 object类型 - 基类:所有类型的基类,就类似是整个生物圈的生物类,是个大的概念 object o1 = new Random(); //object可以承载R ...
- java并发编程目录
java并发编程目录 Java多线程基础:进程和线程之由来 JAVA多线程实现的四种方式 Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition Jav ...
- android toolbar效果2
只有一个按钮的情况 <resources> <string name="app_name">照片</string></resources& ...
- script 写在body和head的区别(WEUI中使用swiper删除)
区别简述: 在HTML body部分中的JavaScripts会在页面加载的时候被执行.在HTML head部分中的JavaScripts会在被调用的时候才执行. JavaScript应放在哪里 ...
- canal 结合 kafka 入门
1.kafka的安装: 略 2.cannal 配置 使用卡夫卡: 修改 /home/admin/canal-server/conf/canal.properties 2.1 修改canal.ser ...
- leetcode64
class Solution { public: int minPathSum(vector<vector<int>>& grid) { int row=grid.si ...
- js代码技巧
1.js 中不常用的处理方法 //取整 parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //Aft ...
- linux查看磁盘大小df命令
df -h https://www.cnblogs.com/sparkdev/p/9273094.html