#### 1.什么是观察者模式
当有多个观察者想同时观察同一个主题对象的时候,当主题对象的状态发生变化,观察者能够回调自身的方法去更新自己。

实现步骤:
1)定义一个观察者接口;
2)观察者实现观察者接口;
3)有一个被通知者接口,里面有addObserver(Observer observer),removeObserver(Observer observer), notifyObserver()方法。
4)在被观察者发生变化的时候,调用notifyObserver(),遍历List,回调observer里面的方法。
实例:
1)RecyclerView和ListView的Adapter就是采用了观察者模式。
2)Android系统内容提供者,内容观察者也是采用了观察者模式。
~~~
1)在RecyclerView的setAdapter()方法里面,它会认为注册mObservable,使其变得是可以观察的;
2)接着RecyclerView内部会把自己的observer注册到observable中;
3)在Adapter调用对应的notify函数的时候,observable会去通知那些注册到它这儿的observer去执行相应的动作。
~~~
>
优点:
很好地解耦了通知者与观察者。观察者不需要了解通知者内部是怎么实现的,方便日后代码的修改,体现 了依赖倒转的原则。
缺点:
1.所有更新对象的动作都一样;
2.抽象通知者还是依赖了抽象观察者。
#### 2.事件委托