博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习总结——观察者模式
阅读量:6593 次
发布时间:2019-06-24

本文共 782 字,大约阅读时间需要 2 分钟。

观察者模式将观察者(订阅)和被观察者(公布)分离,实现了代码的松耦合;且定义了一对多的依赖关系,让多个观察者同事监听一个被观察者,同一时候一个被观察者能通知多个观察者更新。

角色:

抽象主题(Subject):又叫抽象被观察者(Observable)。定义一个接口能够添加和删除观察者对象。

抽象观察者(Observer):为全部的详细观察者定义一个借口,做更新操作。

详细主题(Concrete Subject):实现抽象主题接口,将全部的观察者对象的引用保存到一个列表中。

当状态发生改变时,通知列表中的观察者。又称详细被观察者。

详细观察者(Concrete Observer):实现抽象观察者接口,每一个详细观察者更具详细情况实现。

Android开发中。ContentObserver,setOnClickListener。以及自己定义的接口(在Activity中Implements, 传入到异步任务,当任务完毕后,调用接口函数刷新Activity页面)等都是观察者非常好的样例。

而Java本身提供了对观察者模式的支持,java.util库中提供了例如以下两个类:
Observer接口,作为抽象观察者。仅仅定义了一个接口方法update(),每一个详细观察者单独实现。
Observable类,能够作为抽象被观察者或者详细被观察者。由于这个类而非接口,内部实现已经能满足详细被观察者的要求。当然也能继承并扩展此类。Observable类提供了两个重要方法:setChanged(),用于设置内部标志位,标示被观察者发生变化。notifyObservers(),用于调用列表中全部观察者的update()方法。观察者做更新操作。

參考资料:http://www.blogjava.net/supercrsky/articles/202544.html

转载地址:http://ihdio.baihongyu.com/

你可能感兴趣的文章
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
查看>>
SSH原理与运用(一):远程登录
查看>>
动态代理解决网站字符集编码
查看>>
后台统计
查看>>
React组件: 提取图片颜色
查看>>
3D应用开发中的欧拉角和旋转矩阵
查看>>
爬虫必备技能xpath的用法和实战
查看>>
RxJava2.0的初学者必备教程(九)
查看>>
记一次omi的项目之旅
查看>>
Android API级别、代号、发布时间及平台亮点整理
查看>>
LLDP(链路层发现协议)
查看>>
Ubuntu14 添加程序启动
查看>>
我的友情链接
查看>>
windows网络安全以及常见网络***方式
查看>>
警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
查看>>
JS字符串转换数字
查看>>
centos7-修改主机名
查看>>
面试宝典系列-mysql面试基础题
查看>>
spring data for mongo
查看>>
开启 URL 重写
查看>>