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