// 定义:定义对象间一对多的依赖关系,当一个对象的状态发生
//     改变的时候,所以依赖他的对象都得到通知并更新
//
// 模式举例:
//
// 模式特点:
//
//#include<iostream>
#include<string>
#include<list>
using namespace std;class Observer
{
public:virtual void update(int count)=0;
};class Subject
{
public:virtual void addObserver(Observer * observer)=0;virtual void delObserver(Observer * observer)=0;virtual void notify()=0;virtual void setCurCount(int count)=0;
};class ObserverA : public Observer
{
public:virtual void update(int count){cout <<"ObserverA recv message count = "<<count<<endl;}
};class ObserverB : public Observer
{
public:virtual void update(int count){cout <<"ObserverB recv message count = "<<count<<endl;}
};class ConcreteSubject : public Subject
{
public:virtual void addObserver(Observer * observer){m_observerList.push_back(observer);}virtual void delObserver(Observer * observer){for(auto iter=m_observerList.begin();iter!=m_observerList.end();iter++){if(*iter==observer){m_observerList.erase(iter);break;}}}virtual void notify(){for(auto iter=m_observerList.begin();iter!=m_observerList.end();iter++){(*iter)->update(m_curCount);}}virtual void setCurCount(int count){m_curCount = count;}private:list<Observer*>  m_observerList;int              m_curCount;
};int main()
{Subject * pSubject = new ConcreteSubject();pSubject->addObserver(new ObserverA());pSubject->addObserver(new ObserverB());pSubject->setCurCount(100);pSubject->notify();return 0;
}

3_3 ObserverMode 观察者模式相关推荐

  1. 精讲23种设计模式-基于观察者模式~设计异步多渠道群发框架

    文章目录 一.观察者模式 1. 观察者模式基本概念 2. 观察者模式的应用场景 3. 观察者模式的类图 二.设计异步多渠道群发框架 2.1. 定义消息观察者抽象接口 2.2. 创建观察者 2.3. 主 ...

  2. Java设计模式:观察者模式

    观察者模式 观察者模式又称为发布/订阅(Publish/Subscribe)模式 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新. 如果这句话不好理解 可 ...

  3. 观察者模式的经典应用(猫叫 烧开水)

    Code 猫叫了 老鼠跑 主人惊醒  1/**//*  2 * 题目:  3 * 猫叫了,所有老鼠开始逃跑,主人被惊醒,请用OO的思想描绘此过程  4 * 1,老鼠跟主人是被动的  5 * 2,要考虑 ...

  4. Observer Pattern 观察者模式

    Observer Pattern (观察者模式) 定义: <设计模式>中对Observer模式的意图是这样描述的:"定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, ...

  5. 设计模式之观察者模式(Observer)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. java观察者模式_Java设计模式之观察者模式详解

    观察者模式,是一对多的关系,一个主题对应多个观察者,当这个主题发生变化的时候,所有观察着这个主题的观察者都会接收到通知来获悉主题的变化. 在现实中我们也会遇到许许多多应用观察者模式的行为,比如电视的节 ...

  7. python 设计模式 观察者_python设计模式之观察者模式

    说到观察者模式,在我脑海中总是闪现,这家伙跟消息队列的主题发布订阅有什么关系,虽然本人对消息队列没有很深的研究,但是凭直觉我就认为消息队列的实现就使用了观察者模式吧,所以本文就来模拟消息队列的丐版实现 ...

  8. JS设计模式-观察者模式

    观察者(又称发布订阅)模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新. 原文链接 应用场景 当用户在网页执行一些操作(如点击)后就需要执行 ...

  9. 观察者模式(Observer Pattern)(二):HeadFirst中的气象站的实现

    1 观察者模式的原理,首先由一个主题,当主题发送变化的时候,通知该主题的订阅者 按照上面的分析我们来进行设计 1.抽象主题Subject public interface Subject {publi ...

最新文章

  1. 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
  2. Redis集群分片存储原理图
  3. 2017.4.5 假期的宿舍 思考记录
  4. 【数据库】第四章 JDBC、MyBatis
  5. Liferay Portal使用MySQL数据库配置
  6. vue安装jsencrypt_vue使用JSEncrypt实现rsa加密及挂载方法
  7. Swift 3.0 使用Core Data
  8. 最近游戏更新 未整理 无图片 续
  9. 如何从任何Mac或Windows PC为iOS打印启用AirPrint
  10. Kali系统安装Visual Studio Code
  11. NXP KV10 FTM fault功能的配置
  12. Torch常用函数详解T
  13. 卡马克快速平方根(平方根倒数)算法(转)
  14. excel斜线表头的制作
  15. vue的form表单在提交成功后置空
  16. 发力小程序社交电商,礼物说完成C1轮1亿人民币融资
  17. Goroutine 并发调度模型深度解析之手撸一个高性能 goroutine 池
  18. SSDsim simulation function:simulate()
  19. 多线程模拟实现百米赛跑
  20. 做外链怎么应对百度绿萝算法

热门文章

  1. http请求协议分析
  2. ReactJS入门之声明周期
  3. 数据库-索引-普通索引-唯一索引
  4. mybatis的二级缓存
  5. 代理、委托、钩子与打桩
  6. Java语言中的注释有哪些
  7. 自动化测试和手工测试
  8. 【深度学习】数据降维方法总结
  9. 关于Unity中坐标系的种类
  10. 《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程