行为型设计模式.观察者模式
2017-11-02 本文已影响0人
双鱼子曰1987
一对多的消息通知机制
概念理解
-
定义:对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
Observer.png
又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 -
Subject:观察目标
关键在于维护Observer列表,消息分发顺序以及如何快速的分发消息 -
Observer:观察者、监听者
关键在于指定需要观察目标的哪些变化,以及指定变化发生的回调接口
应用和优缺点
-
解决问题:
一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。 -
应用实例:
iOS的KVO和Notification机制 -
优点:
1、建立一对多的消息传递机制
2、观察者和被观察者是抽象耦合的 -
缺点:
1、观察者太多,消息的传递时间增加,效率降低;特别是如果变化太过于频繁,消息会堵塞。
2、如果在观察者Observer和被观察者Subject之间,存在有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。
3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。
三思而后行
- 思考观察者太多,消息分发效率降低的解决方案?
- 如何维护消息的分发顺序?
- 思考如何避免循环引用?