概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

通常讲就是被观察者向左右观察对象通知其状态的改变,以使得观察者进行相应信息的更新。

代码如下

#include

class ObjectUser;//被观察者对象
class Observer
{
protected:
ObjectUser *m_ObjectUser; public:
virtual void NotifyMessage() = ;
}; class Observer1:public Observer
{
Observer1(ObjectUser *g_ObjectUser)
{
m_ObjectUser = g_ObjectUser;
}
public:
virtual void NotifyMessage()
{
int cmd = m_ObjectUser->command;
cout << "被观察者命令改变为"<<cmd;
}
}; class Observer2:public Observer
{
Observer2(ObjectUser *g_ObjectUser)
{
m_ObjectUser = g_ObjectUser;
}
public:
virtual void NotifyMessage()
{
cout << "被观察者通知消息给我说它发生了改变,要我更新";
//.........
}
}; class ObjectUser
{
friend class Observer;
protected:
int command; std::vector<Observer*> ObserverList; public:
void AddObserver(Observer* pUser)
{
ObserverList.push_back(pUser);
} void NotifyMsg()
{
for (int i = ;i<ObserverList.size();i++ )
{
ObserverList[i]->NotifyMessage();
}
}
}; void main()
{
ObjectUser *OUser = new ObjectUser();
Observer pOb1 = new Observer1(OUser);
Observer pOb2 = new Observer2(OUser); OUser->AddObserver(pOb1);
OUser->AddObserver(pOb2);
OUser->NotifyMsg(); }

最新文章

  1. SQLite学习笔记(六)&amp;&amp;共享缓存
  2. LeetCode&mdash;&mdash;Balanced Binary Tree(判断是否平衡二叉树)
  3. 从零开始学iPhone开发(3)——视图及控制器的使用
  4. php部分--session的三种用法
  5. Windows 2008 R2 配置 DNS 实现二级域名
  6. 在Android软按键中添加Menu键
  7. 3D开发的基本知识
  8. 使用ffmpeg实现转码样例(代码实现)
  9. mysqldump 的方式来搭建master--&gt;slave 的复制架构
  10. 3D模型制作
  11. swift 用协议实现代理传值功能
  12. QModelIndex有internalPointer()函数,可以存任何数据,另有QAbstractItemModel::createIndex来创造节点
  13. 为网站添加IE6升级提示
  14. jquery 元素控制(附加元素/其他内容)引进和应用
  15. Sikuli:创新的图形化编程技术
  16. Caffe学习系列(四)之--训练自己的模型
  17. js中的caller属性和callee属性
  18. Django ORM queryset object 解释(子查询和join连表查询的结果)
  19. 【ABP框架系列学习】N层架构(3)
  20. while循环、格式化输出、运算符和编码初识

热门文章

  1. JAVA采用JDBC连接操作数据库详解
  2. shell中的case表达式
  3. NoSql中的B-tree、B+tree和LSM-tree
  4. 函数:内嵌函数和闭包 - 零基础入门学习Python020
  5. IE10-IE11在NET4.0下出现“__doPostBack未定义”解决方案
  6. [TYVJ] P1027 木瓜地
  7. 可以让javascript加快的脚本(收藏了)
  8. 配置wamp环境使得在命令行下也能执行socket扩展
  9. VS2010的openssl源码编译方法
  10. 《Programming WPF》翻译 第7章 2.图形