Observer 模式学习笔记

来源:互联网 发布:东京地铁 知乎 编辑:程序博客网 时间:2024/05/20 16:35

今天看android代码,看到里面有观察者模式的应用,记录一下。

 

Observer模式应用于这种场景,类A的表现依赖于类B的变化。就可以把A(Observer)设置为B(Model)的观察者。

 

其实现步骤如下:

 

1.定义一个观察者的接口IModelChangedObserver ,里面有一个onModelChanged的接口函数。

 

2.定义一个Model接口。

Model有一个观察者数组,用来保存其所有的观察者。

除此以外Model还有如下接口函数:

registerModelChangedObserver(IModelChangedObserver observer),用于添加一个观察者。

unregisterModelChangedObserver(IModelChangedObserver observer),用来删除一个观察者。

notifyModelChanged,在这个函数中,它要调用其所有观察者的onModelChanged函数

 

3.定义一个继承于IModelChangedObserver的类ClassObserver,该类要实现onModelChanged这个接口函数,用来标明当数据发生变化时该Observer需要的动作。

 

4.定义一个继承于Model的类,ClassModel

当该类数据发生变化时,要调用自己的notifyModelChanged这个函数。

 

5、将ClassModel发生变化的时候,就会调用ClassObserver的onModelChanged函数。

 

当然Observer和Model直接是m:n的关系

一个Observer可以观察多个Model,一个Model也可以被多个观察者观察。

原创粉丝点击