观察者模式:通常用来表示一对多的监听关系,类似小时候一打开电视,爸妈就来叫你写作业。
这其中你打开电视就说明你的状态变了,然后你把电视的声音通知了所有观察者(关注你看电视的人),然后调用了他们共同的方法(叫你写作业),从原理来说,观察者不需要一直盯着你,当被观察者一旦发生变化就会通知所有观察者并调用对应的方法,观察者就知道了。也就是说观察者在事件发生的时候处于一种被动地位,被观察者处于主动地位。Android中的View.setxxxListener(method)就是一种观察者模式,当点击事件发生的时候就会调用观察者的指定方法,即method(匿名观察者?)
在一般的观察者模式讲解中通常是使用list将观察者对应存起来,当观察条件触发了,就循环调用观察者的指定方法。
暂时就这些了,没有什么用例图,没有什么代码,都是我一个字一个字憋出来的。实际上就是两个对象,我变了,我调用你的约定方法,然后分别将两个对象抽象化(或者说接口化更准确一些,因为共有的是行为,所以用接口,不知道这样表述是否正确)。
学习观察者模式是为了学习RxJava和阅读源码一类的,观察者模式用得还是挺多的。
如果有哪里不对的,请批评指正。