android 设计模式篇 之 观察者模式
2019-12-17 本文已影响0人
treasure_ct

1.简介
观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。
在此模式下,一个对象(被观察者)可以管理一大批观察者对象,并且在自己的状态发生变化时,通过接口通知观察者们,而观察者们接到通知后,可以分别作出相应的动作。优点是:观察者与被观察者之间不会产生直接耦合,但它们是抽象耦合的(通过接口),观察者模式又被称作发布/订阅模式。

2.UML图

3.简单实例代码
分为Student和Teacher类,分别代表观察者和被观察者,老师布置作业


二者相互调用

4.观察者模式在RecyclerView中的调用
RecyclerView的Adpter.notifyDataSetChanged为什么能刷新界面?
RecyclerView的观察者,在哪里被注册和注销的呢?
用到RecyclerView,其实对我们来讲最能够接触的的是Adapter
Adapter里的 notifyDataSetChanged()

主动去调用被观察者的 notifyChange 从而引起观察者的改变
AdapterDataObservable

从一个list里逐一去调用onChange方法,这也就是为啥提倡使用notifyByPosition(int position)
AdapterDataObserver

实现类 RecyclerViewDataObserver

重点就是这个requestLayout 顾名思义就是重新布局 具体看自定义View
大概就是这个样子,简单易读。