为何使用观察者模式?spa
当一个对象改变时,会影响其余几个对象的改变,此时应该使用观察者模式。线程
也即一个事件发生时,会产生一些后续事件。对象
为何不直接在对象改变的代码中直接添加改变其余对象的代码?接口
①由于一旦须要增删改对其余对象的操做,就须要直接修改原始对象操做的代码。不利于程序的维护。事件
②在原始事件处理代码中加入对后续事件的处理代码,会拖慢原始事件的处理速度。微博
什么是观察者模式?用户体验
定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的全部依赖者都会受到通知并自动更新。引用
简单来讲,观察者模式有两个对象,分别是被观察者和观察者们。程序
被观察者须要将它的观察者们的引用存储在一个集合中,在它发生改变时,及时的提醒集合中的观察者们作出相应的改变。集合
观察者们须要实现一个与被观察相对应的统一接口,以便被观察者可以方便的查找到实现了此接口的观察者们,同时观察者们的内部也须要作出响应被观察者的响应操做。
好比:
原始事件(被观察者)为——微博点赞;
后续事件(观察者们)为——给被点赞人发送提示,增长两位用户之间的亲密度,判断该微博是否晋升为热门微博等等;
”微博点赞“事件处理完成以后,观察者们也收到要作出相应操做的通知,并作出相应反应。
好处之一——加强用户体验:此处的”微博点赞“和用户体验最直接,用户一点完赞,必须很快可以看到相应的界面变化,可是其余后续事件相对来讲,并非那么紧急,咱们能够再单独开一条线程来完成后续事件。