Android设计模式 观察者模式之eventbus

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/capeng https://blog.csdn.net/capeng/article/details/53609489

    观察者模式是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包来实现的。也可以自己写一套逻辑来实现这样的功能。等哪天有时间,我把项目里面的代码抽出来,也发出来一起看看。每个人写的逻辑必然都有自己的优缺点。如有更严谨的方法,可以提出来大家学习学习。




猜你喜欢

转载自blog.csdn.net/capeng/article/details/53609489