博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式
阅读量:5140 次
发布时间:2019-06-13

本文共 1498 字,大约阅读时间需要 4 分钟。

1.定义

在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2.代码简单实现

1 #include
2 #include
3 #include
4 using namespace std; 5 class AbObserver 6 { 7 public: 8 virtual void getMessage(string message) = 0; 9 };10 11 class AbSecretary12 {13 public:14 virtual void senfMessage(string message) = 0;15 virtual void addObserver(AbObserver * observer) = 0;16 };17 //开小差的同事类(观察者)18 class Observer:public AbObserver19 {20 public:21 void getMessage(string message)22 {23 cout << message << endl;24 }25 };26 //秘书类(主题对象,通知者)27 class Secretary:public AbSecretary28 {29 public:30 void senfMessage(string message)31 {32 for (list
::iterator it = observers.begin(); it != observers.end(); it++)33 {34 (*it)->getMessage(message);35 }36 }37 void addObserver(AbObserver * observer)38 {39 observers.push_back(observer);40 }41 private:42 list
observers;43 };44 45 int main()46 {47 Observer *observer1 = new Observer;48 Observer *observer2 = new Observer;49 Secretary * secretary = new Secretary;50 secretary->addObserver(observer1);51 secretary->addObserver(observer2);52 secretary->senfMessage("老板来了");53 secretary->senfMessage("老板走了");54 system("pause");55 return 0;56 }

 

转载于:https://www.cnblogs.com/LifeoFHanLiu/p/9965482.html

你可能感兴趣的文章
Border-radius
查看>>
mysql触发器
查看>>
Redis学习笔记(1)Redis安装和启动
查看>>
淌淌淌
查看>>
BZOJ1002:[FJOI2007]轮状病毒
查看>>
SSD5_Recommended Exercise 4 分析
查看>>
django实现分页功能
查看>>
CSS伪类与CSS伪元素的区别
查看>>
如何:修改字符串内容
查看>>
Tomcat Server之启动---Bootstrap类
查看>>
经典问题-生产者和消费者问题
查看>>
Hadoop Distributed File System 简介
查看>>
文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)...
查看>>
常用正则表达式
查看>>
队列的基本使用方法
查看>>
解题:USACO18FEB Taming the Herd
查看>>
ACM-括号匹配问题
查看>>
使用Python中的urlparse、urllib抓取和解析网页(一)(转)
查看>>
Linux_屏蔽360、scanv、QQ管家等IP扫描
查看>>
LeetCode 538. Convert BST to Greater Tree
查看>>