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
大概就是这个样子,简单易读。
网友评论