首页 > 代码库 > 观察者模式
观察者模式
#include <iostream> #include <string> using namespace std; class Subject { private: vector<Observer> observers = new List<Observer>(); public : void Attach(Observer observer) { observers.push_back(observer); } void Detach(Observer observer) { for( ;; ) { observers.erase(observer); } } void Notufy() { for(Observer o in observers) { o.Update(); } } }; class ConcreteSubject : Subject { private: string subjectState; public: string Subjectstate { get set } }; class Observer { public: virtual void Update()=0; }; class ConcreteObserver:Observer { ConcreteSubject subject; public: void update() { cout<<" "<<subject.subjectState<<endl; } }; int main() { ConcreteSubject s = new ConcreteSubject(); s.Attach(new ConcreteObserver()); s.Attach(new ConcreteObserver()); s.Attach(new ConcreteObserver()); s.subjectState = "ABC"; s.Notufy(); }
使用场景:当一个对象的改变需要同时改变其他对象的时候,而且不知道具体有多少对象有待改变时,应该考虑观察者模式。
当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,这是用观察者模式,可以将这两者封装在独立的对象中,使它们各自独立的改变和复用。
观察者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。