🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 1.什么是观察者模式 当有多个观察者想同时观察同一个主题对象的时候,当主题对象的状态发生变化,观察者能够回调自身的方法去更新自己。 ![](https://box.kancloud.cn/2016-07-17_578b427ce9d26.png) 实现步骤: 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.事件委托