码迷,mamicode.com
首页 > 移动开发 > 详细

android设计模式之--观察者模式

时间:2014-12-01 22:37:24      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:android   应用开发   设计模式   观察者模式   源码   

   最近比较忙,好久没有更新博客了,今天就将最近研究的一个东西总结一下,最近在维护公司的一个项目,我负责的模块主要是下载杂志后及时的更新UI,将最新的下载进度更新到UI上,中间遇到的一个问题是:同一个对象的下载进度会有多个Item监听它的状态,也就是说一个进度要更新到多个Item上,开始没有什么头绪,百度一番后发现了观察者模式这个东西,它就是为了满足这种一对多问题而出现的.

   有了思路以后,就着手开始了解观察者模式是如何工作的,虽然以前知道设计模式里有这个东西,但还真是没用过,下面就讲解一下观察者模式如何在项目中实际应用.先看一下应用在项目中的效果:

    bubuko.com,布布扣bubuko.com,布布扣

   如图:同一本书在书店页与书架页的下载进度是要完全一样的,我们可以用观察者模式达到这种效果.

  1.观察者模式包含的内容:观察者模式中主要有观察者和被观察者两种对象,被观察者主要实现数据或状态的更新,有更新后通知所有的观察者,而观察者则主要负责收到通知后,去更新自己所关注的内容.

  2.观察者模式的使用步骤:1)创建一个 Subject(主题接口),接口中有被观察者要实现的所有功能;2)创建一个观察者接口,所有实现了此接口功能的,都被称为观察者,3)将所有实现了观察者接口的观察者都注册到被观察者中.4)被观察者通过遍历所有的观察者对象,调用其实现的观察者接口方法.(就是一个接口的回调过程)

  只要实现了以上四个步骤就成功的创建一个观察者模式,下面是我项目中用到观察者模式的框架结构:

  1.创建一个Subject主题接口,定义了被观察者的功能.如图:

  bubuko.com,布布扣

   这里定义了被观察者的功能和添加,删除观察者..

  2.创建一个被观察者对象,实现此主题接口功能

   bubuko.com,布布扣

     此处,我省略了项目里其它的代码,只留下一个框架结构.这样我们的被观察者类就创建好了.

    3.创建观察者接口,定义好观察者要实现的功能.

     bubuko.com,布布扣

     4.创建我们的观察者类,如图:

      bubuko.com,布布扣实现了我们定义好的观察者接口即成为一个观察者.

     至此,整个观察者模式的框架就搭建完成,只要在对应的类中实现我们要的业务逻辑即可.

    

    总结: 1.观察者模式是一个非常重要的设计模式,从android系统的设计就可以看的出,系统的设计本身就使用了非常多的观察者模式,例如 : View的事件监听机制,ContentProvider 的 ContentObserver, BaseAdapter的设计,可见,观察者模式是十分重要的,是我们必须掌握的.2.掌握观察者模式的前提是必须熟练使用接口回调,观察者模式其实就是一个复杂的接口回调.

   

android设计模式之--观察者模式

标签:android   应用开发   设计模式   观察者模式   源码   

原文地址:http://blog.csdn.net/lcq5211314123/article/details/41651365

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!