观察者模式
Posted 怎度网
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式相关的知识,希望对你有一定的参考价值。
#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(); }
使用场景:当一个对象的改变需要同时改变其他对象的时候,而且不知道具体有多少对象有待改变时,应该考虑观察者模式。
当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,这是用观察者模式,可以将这两者封装在独立的对象中,使它们各自独立的改变和复用。
以上是关于观察者模式的主要内容,如果未能解决你的问题,请参考以下文章
Java设计模式补充:回调模式事件监听器模式观察者模式(转)