#include <functional>
#include <vector>
#include <algorithm>
#include <iostream>
typedef std::function<void(int)> Func; class Observer
{
public:
void AddObserver(Func func)
{
m_vecFuncs.push_back(func);
} void Notify(int i)
{
std::for_each(m_vecFuncs.begin(), m_vecFuncs.end(),
[=](Func func){func(i); }
);
} private:
std::vector<Func> m_vecFuncs;
}; class Add
{
public:
void operator()(int i, int b=0)
{
std::cout << i << std::endl;
}
}; class Sub
{
public:
void func(int i)
{
std::cout << i << std::endl;
}
}; int main()
{
Observer observer;
observer.AddObserver(Add()); Sub sub;
observer.AddObserver(std::bind(&Sub::func, &sub, std::placeholders::_1));
observer.Notify(1);
observer.Notify(2);
}

  

观察者模式 C++11的更多相关文章

  1. Boost程序库完全开发指南——深入C++“准”标准库(第3版)

    内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...

  2. boost 介绍

    简介: Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容 ...

  3. 为 CmakeLists.txt 添加 boost 组件

    目录 为 CmakeLists.txt 添加 boost 组件 Boost 常用组件 1.时间与日期 timer, date_time, chrono 2.内存管理 system 3.实用工具库 4. ...

  4. 地区sql

    /*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...

  5. (原创)c++11改进我们的模式之改进观察者模式

    和单例模式面临的是同样的问题,主题更新的接口难以统一,很难做出一个通用的观察者模式,还是用到可变模板参数解决这个问题,其次还用到了右值引用,避免多余的内存移动.c++11版本的观察者模式支持注册的观察 ...

  6. PHP 设计模式 笔记与总结(11)观察者模式

    [观察者模式(Observer)]当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新 [场景]一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑. ...

  7. Java描述设计模式(11):观察者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.观察者模式 1.概念描述 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.观察者模式定义了一种一对多 ...

  8. java中观察者模式Observable和Observer

    25.java中观察者模式Observable和Observer 如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的 ...

  9. C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命

    使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠 ...

随机推荐

  1. ubunt 命令行下链接VPN

    Ubuntu命令行下VPN连接与使用 route add default dev ppp0 route add -net 192.168.2.0 netmask 255.255.255.0 ppp0 ...

  2. C#代码搜索器

    WEBUS2.0 In Action - [源代码] - C#代码搜索器 最近由于工作的需要, 要分析大量C#代码, 在数万个cs文件中搜索特定关键词. 这是一项非常耗时的工作, 用Notepad++ ...

  3. kinect (oldest one) (libfreenect with py_kinect) on linux ubuntu14.04 x64

    freenect libs Where is the resource? Here :P : https://github.com/OpenKinect/libfreenect To make sur ...

  4. Django入门实践(一)

    Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...

  5. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...

  6. [ios]iphone 获取UIWebView内Html方法

    原文:http://blog.csdn.net/diyagoanyhacker/article/details/6564897 获取所有html:NSString *lJs = @"docu ...

  7. JS算法之快排&冒泡

    1.快速排序思想: 1.1 先找数组的最中间的一个数为基准 1.2 把数组通过此基准分为小于基准的left数组和大于基准的right数组, 1.3 递归重复上面的两个步骤, 代码如下: functio ...

  8. Linux环境快速部署Zookeeper集群

    一.部署前准备: 1.下载ZooKeeper的安装包: http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper-3.4.9. 2.将下载的 ...

  9. jquery ColorPicker 颜色选择器

    $(function() { $('#colorpickerField').ColorPicker({ onSubmit: function(hsb, hex, rgb, el) { $(el).va ...

  10. oracle建表的时候同时创建主键,外键,注释,约束,索引

    --主键create table emp (id number constraint id_pr primary key ,name1 varchar(8));create table emp9 (i ...