Android 设计模式之 观察者模式

作者: lovesosoi | 来源:发表于2017-03-08 20:41 被阅读112次

    作者:ivm

    之前介绍了 单例模式,今天介绍一个使用频率与单例模式不相上下的 模式 观察者模式

    《Android 源码设计模式 解析与实战》这本书很棒哦~

    首先什么是观察者模式

    观察者模式: 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新

    那么观察者模式的使用场景有哪些

    1.事件多级触发场景

    2.跨系统的消息交换场景, 如消息队列、事件总线的处理机制

    3.关联行为的场景, 需要注意的是,关联行为是可拆分的,而不是”组合关系”

    (后面会详细举例de)

    观察者模式UML

    uml

    角色介绍

    Subject: 抽象主题,也就是被观察者(observable)的角色,抽象主题角色吧所有观察者对象的引用保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。

    ConcreteSubject:具体主题,该角色将有关状态存入具体观察者对象,在具体主题内部状态发生改变时,给所有注册过的观察者发送通知,具体主题角色又叫做具体被观察者(Concrete Observable)角色

    Observer:抽象观察者,该角色是观察者的抽象类,它定义一个更新的接口,使得在得到主题的更改通知时更新自己。

    ConcreteObjserver:具体的观察者,该角色实现抽象观察者角色所定义的更细接口,以便在得到主题的状态发生变化时更新资深的状态。

    可能看着有点乱,简单来说 subject 被 observer 订阅,subject实现类对象 更新,会通知observer 的实现类对象 。如果还是听不明白的话。我就举一个例子

    Coder类是订阅者

    coder

    Dtf类 是被订阅 的对象类

    dtf

    Test 类是测试类

    test

    Android 中 ListVIew 添加数据 后 调用 listVIew adapter 的 notifyDataSetChanged ( ); 这个就是一个典型的观察者模式 至于适配器模式 之后我也会为大家介绍的。

    BroadcastReceiver ,发送广播时,注册IntentFilter 的 广播就回收到这个消息 广播的onReceiver 就回被调用,也是一个典型的观察者模.

    关注🔽🔽公众号 ,获取更多Android ,

    Mandroid

    相关文章

      网友评论

        本文标题:Android 设计模式之 观察者模式

        本文链接:https://www.haomeiwen.com/subject/tkrigttx.html