#include iostream#include listusing namespace std;class Object;class Observepublic ObserveObject obj = nullptr m_pObjobj void careObjObject obj m_pObj = obj; virtual void update = 0;protected Obj
- 包含了iostream和list头文件。
- 使用了命名空间std。
- 声明了Object和Observe类。
- Observe类的定义开始。
- 构造函数,初始化m_pObj为nullptr。
- careObj函数,用于设置m_pObj指针指向的对象。
- 纯虚函数update,子类需要实现该函数。
- protected保护成员变量m_pObj,指向被观察的对象。
- Object类的定义开始。
- addObserve函数,向m_lst列表中添加观察者。
- delObserve函数,从m_lst列表中移除观察者。
- notify函数,通知所有观察者进行更新。
- int类型的状态变量state。
- 存储观察者的列表m_lst。
- Student类的定义开始,继承自Observe类。
- 构造函数,初始化m_pObj指针。
- update函数,根据被观察对象的状态进行不同的操作。
- Teacher类的定义开始,继承自Object类。
- main函数的开始。
- 创建Teacher对象jack。
- 创建Student对象tom,将tom的被观察对象设置为jack。
- 创建Student对象zs。
- 将zs的被观察对象设置为jack。
- 调用jack的addObserve函数,将tom添加为观察者。
- 调用jack的addObserve函数,将zs添加为观察者。
- 将jack的状态设为1。
- 调用jack的delObserve函数,将zs从观察者列表中移除。
- 调用jack的notify函数,通知所有观察者进行更新。
- 返回0,表示程序正常结束
原文地址: http://www.cveoy.top/t/topic/iSgU 著作权归作者所有。请勿转载和采集!