本文是C++代码
当一个对象的改变需要同时改变其他对象时,可以考虑使用观察者模式。
解耦和,让耦合双方都依赖于抽象,而不是依赖具体的实现。从而使得各自的变化不会影响到另一边的变化。
Observer.h
#ifndef OBSERVER_H_ #define OBSERVER_H_ #includeusing namespace std; class Observer{ public: virtual void update() = 0; // virtual ~Observer(){} }; class Staff : public Observer{ public: virtual void update(){ cout << "老板下发新消息了。。。。。。" << endl; } }; #endif
Subject.h
#ifndef SUBJECT_H_ #define SUBJECT_H_ #includeusing namespace std; #include #include #include "Observer.h" class Subject{ public: virtual void attach(Observer* observer) = 0; // 添加订阅消息的观察者 virtual void detach(Observer* observer) = 0; // 删除订阅消息的观察者 virtual void notify() = 0; // 执行通知 virtual ~Subject(){} }; //实现部分,应该另起一个文件------------------------------- class Boss : public Subject{ private: list
observers; public: // 添加订阅消息的观察者 virtual void attach(Observer* observer){ observers.push_back(observer); } // 删除订阅消息的观察者 virtual void detach(Observer* observer){ observers.remove(observer); } // 执行通知 virtual void notify(){ list ::iterator itr = observers.begin(); // 遍历观察者并更新通知 while(itr != observers.end()){ (*itr)->update(); } } virtual ~Boss(){} }; #endif
main.cpp
#include "Subject.h"
int main(){
// 创建Boss对象
Boss *boss = new Boss;
Staff *staff1 = new Staff;
boss->attach(staff1);
boss->notify();
delete boss;
return 0;
}
好网站推荐:观察者模式 | 菜鸟教程观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 何时使用:一个对象(目标对象)的状态发生改变,所有的依..https://www.runoob.com/design-pattern/observer-pattern.html



