每天不断学习,才能不断提升自己。
参见:http://baike.baidu.com/view/1854779.htmhttp://blog.csdn.net/huangkangying/article/details/7901602实现观察者模式的过程实现观察者模式有很多形式,比较直观的一种是使用一种“注册——通知——撤销注册”的形式。下面的三个图详细的描述了这样一种过程: 1、观察者 (Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。 2、被观察对象 被观察对象发生了某种变化(如图中的SomeChange),从容器中得到所有注册过的观察者,将变化通知观察者。3、撤销观察 观察者告诉被观察者要撤销观察,被观察者从容器中将观察者去除。 观察者将自己注册到被观察者的容器中时,被观察者不应该过问观察者的具体类型,而是应该使用观察者的接口。这样的优点是:假定程序中还有别的观察者,那么只要这个观察者也是相同的接口实现即可。一个被观察者可以对应多个观察者,当被观察者发生变化的时候,他可以将消息一一通知给所有的观察者。基于接口,而不是具体的实现——这一点为程序提供了更大的灵活性。
【观察者模式的优点和缺点】观察者模式的优点:1、观察者和主题之间的耦合度较小;2、支持广播通信;
观察者模式的缺点:1、由于观察者并不知道其它观察者的存在,它可能对改变目标的最终代价一无所知。这可能会引起意外的更新。
【观察者模式适用场景】1、当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。2、当对一个对象的改变需要同时改变其它对象,而不知道具体有多少个对象待改变。3、当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换句话说,你不希望这些对象是紧密耦合的。
Powered by: C++博客 Copyright © SunRise_at