一、原理讲解
1.1意图
定义一种“一对多”的关系。当一个对象(被观察者/发布者)的状态发生改变时,所有依赖它的对象都将得到通知并更新。又有别名为发布-订阅(publish-subscribe)。
1.2应用场景
- 一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中,以使它们可以独立的改变和复用
- 当一个对象改变,连带其它对象也跟着改变,但是不需要知道具体改变对象的数量
1.3结构图UML
1.4代码实现步骤
a1 先实现一个抽象主题接口类ISubject,主题接口提供增加、删除、通知接口
a2 在实现一个抽象观察者接口类IObserver,观察者接口提供更新操作接口
a3 实现两个具体观察者类,继承观察者接口类,实现具体更新函数update()
a4 实现一个具体的主题类,继承抽象接口类,实现具体的增加、删除、通知观察者函数细节。
二、实现代码
#include <iostream>
#include <list>
using namespace std;
class IObserver;
//主题接口,抽象基类
class ISub