github:https://github.com/shonegg/NetMonitor

一.对观察者模式的理解:

1.观察者模式,又叫发布-订阅(Publish/Subscribe)模式,定义的是对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2.观察者模式所涉及的角色有:

(1)抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。

(2)具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。具体主题角色又叫做具体被观察者(Concrete Observable)角色。

(3)抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在得到主题的通知时更新自己,这个接口叫做更新接口。

(4)具体观察者(ConcreteObserver)角色:存储与主题的状态自恰的状态。具体观察者角色实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态 像协调。如果需要,具体观察者角色可以保持一个指向具体主题对象的引用。

观察者结构图如下图所示:

二.android网络监控下的观察者模式运用

1、观察者相应接口代码:

 代码位置:https://github.com/shonegg/NetMonitor/blob/master/library/src/main/java/com/net/framework/NetObserver.java

可以看到,当观察者接收到来自被观察者的通知消息时,会做出相应的更新操作。

2.被观察者相应代码:

代码链接:https://github.com/shonegg/NetMonitor/blob/master/library/src/main/java/com/net/framework/NetObservable.java

如果网络发生了变化,则被观察者就会通知所有观察者网络有变化了和以及告知观察者当前网络类型。

3.观察者容器:

https://github.com/shonegg/NetMonitor/blob/master/library/src/main/java/com/net/framework/NetMonitor.java

可以看到,在观察者容器NetMonitor中定义了加入一个观察者(订阅)、删除一个观察者(取消订阅)等方法。

三.观察者模式在项目中优点总结:

(1)观察者和被观察者是抽象耦合的,被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。

(2)观察者模式可以进行广播通信,这个优点特在以上项目中得到了很好的应用。比如在源码中,NetApplication主要是内部初始化广播监听者,如果广播接收者收到了网络变化广播,就会解析当前具体网络类型,然后通知被观察者(Observable),被观察者通知所有观察者网络有变化了和当前网络类型,

转载于:https://www.cnblogs.com/yangchongzhi/p/9836412.html

观察者模式在android网络监控下的运用相关推荐

  1. 叮!快收好这份Android网络性能监控方案

    简介:移动互联网时代,移动端极大部分业务都需要通过App和Server之间的数据交互来实现,所以大部分App提供的业务功能都需要使用网络请求.如果因为网络请求慢或者请求失败,导致用户无法顺畅的使用业务 ...

  2. Android网络性能监控方案

    背景 移动互联网时代,移动端极大部分业务都需要通过App和Server之间的数据交互来实现,所以大部分App提供的业务功能都需要使用网络请求.如果因为网络请求慢或者请求失败,导致用户无法顺畅的使用业务 ...

  3. 360buy android 首页打开网络监控数据分析

    360buy android 首页打开网络监控数据分析 一共10次链接,5次接口数据链接,5次图片... 主要分析接口数据链接 见附件html... 从下往上看... 五次接口tcp数据链接,七次请求 ...

  4. 海神平台网络监控SDK(Android)开发经验总结

    海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控.ANR监控.网络监控.自定义错误等功能,目前已接入了公司内10余款APP.针对Crash我们之前在&l ...

  5. android流量监控步骤_Android流量网络监控设计(超级实用版).doc

    Android流量网络监控设计(超级实用版).doc 摘 要 伴随着Android智能移动设备的普及,其对网络系统和流量监控的要求越来越高,因而,让用户有能力实现对移动设备网络流量的实时监控和显示,同 ...

  6. linux下构建Zabbix网络监控平台

    linux下构建Zabbix网络监控平台 由于图片过多,本人不想一张一张上传,请下载我的详细文章: linux下构建zabbix网络监控平台[技术文档](河南-清小小)-下载地址: http://do ...

  7. linux下构建Smokeping网络监控平台

    linux下构建Smokeping网络监控平台 一. Smokeping 简介 1.1 Smokeping简介: Smokeping 是rrdtool 的作者Tobi Oetiker 的作品,是用Pe ...

  8. 实时内核μC/OS-II下的网络监控系统的设计

    实时内核μC/OS-II下的网络监控系统的设计 [日期:2008-8-5] 来源:电子技术应用  作者:高长艳 郑喜凤 丁铁夫 [字体:大 中 小] <script src="http ...

  9. Linux下smokeping网络监控环境部署记录

    smokeping是一款监控网络状态和稳定性的开源软件(它是rrdtool的作者开发的),通过它可以监控到公司IDC的网络状况,如延时,丢包率,是否BGP多线等: smokeping会向目标设备和系统 ...

最新文章

  1. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐
  2. ios android rsa加密解密,IOS RSA加密解密
  3. Android Studio编译NDK工程时,报ndk-build.cmd'' finished with non-zero exit value 2错误
  4. 12、oracle数据库下的存储过程和函数
  5. 可以用在任何人身上:百战百胜人生10大成功秘诀
  6. zbb20170228_spring_tdt
  7. 求生欲强烈!HTC官方回应并未退出中国市场
  8. android 中LayoutInflater 的使用
  9. VR线下体验店群雄并起,超级队长为何能靠IP突围?
  10. 阿里Q3财报:阿里云连续第7个季度翻番
  11. python中使用动量交易策略
  12. 授狗l输入法linux,[最好]狗狗输入法下载→狗狗输入法下载
  13. Go编程语言能干什么
  14. 卸载creative cloud
  15. 《数据挖掘:R语言实战》P234中,UCI数据库中白酒品质研究数据集4898个样本下载问题
  16. 32位汇编(1) - masm32环境配置
  17. 前端常用PS技巧总结之更换图片背景颜色
  18. 百世赴美IPO拟募7.5亿美元,“另类”大佬周韶宁迎来新冒险
  19. c语言中short作用,详解C语言中整数(short,int,long)
  20. 基于多角度SAR的目标三维几何信息提取技术

热门文章

  1. Python中文问题
  2. html5访问电脑或手机摄像头
  3. jstack Dump日志文件中的线程状态
  4. 添加删除桌面用户ubuntu10.10
  5. js里面关于IE和万恶的IE6的判断
  6. “内存不足”的九大原因及解决方法
  7. java 替换 rn_RN热更新之Android篇
  8. shell 截取ip地址最后一位_shell 截取IP地址
  9. su切换到oracle后怎么退出,linux下启动oralce和关闭oracle以及数据库实例化
  10. html5的常用标签,HTML5常用标签