观察者模式是Android一个非常常用的设计模式。他的最大的作用是解耦。很多情况下,很多it从业者会发现,修改一个地方的一句代码,往往会牵涉到其他地方也需要跟着一起做修改。这就是一种耦合。牵一发而动全身,这样会给程序埋下很大的安全隐患,特别是在功能强大起来,代码量增加以后。而观察者模式可以很大程序的解决这样的耦合问题,让代码简约、耦合度低。

  一、观察者模式的概念:

      定义对象之间一种一对多的依赖关系,当一个对象改变了状态的时候,所有依赖于他的对象都会收到通知并作出对应的处理。就像打仗一样,每个军队都会派出探子去侦察敌军的情况,一旦发现敌军有动静,会作出相应的应对。这里的敌军就是被观察者,而侦察兵就是观察者。

二、观察者模式何时使用:

   观察者模式实际上也可以说是一种发布(publish)-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式。但你修改一个数据之后,这个数据需要在十几个UI上面作出修改的时候,但你一个数据修改之后,需要通知各个activity、Service说你修改了数据的时候,但是。如果只是一个简单的app,没有太复杂的逻辑交互,这个时候,你还去设计了一个观察者模式的框架。那就真是得不偿失了。

三、观察者模式的实现方式

    首先你得明确,设计模式,是一种模式,一种思想,他不是一个实体或者真实存在的东西。所以设计模式的实现方式肯定存在着N多种。你可以去设计各种各样的代码框架去实现它。这里先介绍一种最最简单的实现方式。自己代码实现的观察者模式,等有时间把代码整理再写一篇另外的博客。

    而这种最最简单的方式就是利用第三方jar实现。现在使用最广、接受度最高的应该是eventbus 这个jar包。下面介绍一下,这个包怎么样去使用。因为他是一个开源的jar包,在gihub上面你可以看到他是如何实现的:https://github.com/greenrobot/EventBus#add-eventbus-to-your-project 。

    如果你用的是eclipse 开发,那你需要去github上面下载eventbus.jar 包,然后倒入到你的eclipse中去就可以了。如果用的是Android studio开发,那你需要通过build.gradel 配置一下就可以了:


dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:23.0.0'    //eventBus所需要的包    compile 'de.greenrobot:eventbus:2.4.0'}

引入成功之后就简单了。


第一件事情是注册一个



第二件事是写一个event的类,这个主要看你需要些什么参数。或者你需要实现的功能是什么去写的。


然后就可以开始使用了:

发送:


接受:




    这种方法实现就这样。简单,代码量少。当然,这个是利用了别人的jar包来实现的。也可以自己写一套逻辑来实现这样的功能。等哪天有时间,我把项目里面的代码抽出来,也发出来一起看看。每个人写的逻辑必然都有自己的优缺点。如有更严谨的方法,可以提出来大家学习学习。




更多相关文章

  1. android一键分享功能不使用任何第三方sdk
  2. Android上超级好用的前端调试方法(adb reverse)
  3. android 如何绕过签名校验
  4. Android上实现仿IOS弹性ListView
  5. 第1个Android应用程序 Android制作简单单页导航
  6. Android的NoVIP视频解析APP开发完整过程
  7. 挖掘更合适的MVP模式的架构设计
  8. Android进程永生技术终极揭秘:进程被杀底层原理、APP应对技巧
  9. 在android 4.0 上面移植camera的一些心得 包括 单双camera 型号

随机推荐

  1. 求救~~最近刚学python,但却无法用pip导入
  2. python中range()函数的用法--转载
  3. 兄弟连学Python__GitHub入门
  4. Python演讲笔记1
  5. 更简单的方法来启用详细日志记录
  6. python 的多线程 调用input后 别的线程也
  7. windows下安装python的三方模块pyExceler
  8. nova中periodic task的实现
  9. python爬网上图片
  10. python xml.sax没有解析器找到py2exe