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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-10-14 20:52:10

android设计模式之--观察者模式的相关文章

Android 设计模式之观察者模式

观察者设计模式的定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 面向对象设计原则:为交互对象之间的松耦全设计而努力 在我们实际应用中,还会遇到一对一.或者多对一的情况.一对一就是,一个目标对应一个观察者.多对一是指多个目标对应一个观察者. 松耦合的好处: 一.是它适应变化的灵活性: 二.是当某个服务的内部结构和实现逐渐发生改变时,不影响其他服务 它的类图 观察者模式在Android系统中的应用还是相当广泛的,如监听器 public voi

Android设计模式系列--观察者模式

观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下.本文以AbstractCursor为例子,展开分析.观察者模式,Observer Pattern,是一个很实用的模式,本人曾经接触到的各种平台以及曾经参与项目中打印模板解释器中都用到了此模式. 1.意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.热门词汇:依赖 发布-订阅 事件 通知 更新 监听 2.结构 这是一个最简单的观察者模式

【设计模式篇】Android设计模式之-观察者模式 自我见解

观察者模式在Android广泛的使用.现在结合自己的理解,并且写一个简单demo. 当老师讲课的时候,老师就是一个被观察者,他应该继承于Observer 学生听课的时候,就是观察者,他应该实现观察者的接口. 这样的话,老师讲课的时候,学生都能收到消息了 package com.ferris.observice; import java.util.Observable; import java.util.Observer; import android.content.Context; impor

android设计模式之观察者模式详解

背景:有一个叫什么四人帮的:美国四个it大牛:我也不认识:总结出了23中设计模式:针对编程中的问题解决方案: 解决问题:当目标或数据发生变化时:观察者(界面)要显示通知: 观察者模式: 概念:一个对象发生改变时,所有信赖于它的对象自动做相应改变. 我在这里举一个西游记的例子: 被观察者:唐僧: 观察者:悟空:沙僧:八戒: 妖怪: 当师父唐僧被妖怪抓走时:观察者:悟空:沙僧:八戒:就会发现:并作出响应: 再举一个程序中的例子: 我们查询数据库并且用listview显示:而当数据库中的内容发生改变时

Android设计模式源码解析之观察者模式

Android设计模式源码解析之观察者模式 本文为 Android 设计模式源码解析 中 观察者模式 分析 Android系统版本: 2.3 分析者:Mr.Simple,分析状态:未完成,校对者:Mr.Simple,校对状态:未开始 1. 模式介绍 模式的定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新. 模式的使用场景 关联行为场景.需要注意的是,关联行为是可拆分的,而不是"组合"关系: 事件多级触发场景: 跨系统的消息交换

java/android 设计模式学习笔记(2)---观察者模式

这篇来讲一下观察者模式,观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统.订阅--发布系统等.因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖.以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦,观察者模式此时就派上用场了. PS:对技术感兴趣的同鞋加群544645972一起交流. 设计模式

Java设计模式之观察者模式

综述 观察者模式(Observer Pattern)也叫做发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.这个模式的一个最重要的作用就是解耦.也就是将被观察者和观察者进行解耦,使得他们之间的依赖性更小,甚至做到毫无依赖.在观察者模式中它定义了一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新.下面就来看一下观察者模式的具体实现. 观察者模式实现 在这里我们假定一个场景,在一个图书管理系统中,现在有这么一个需求

android 设计模式的应用

1 职责链模式 职责链模式的意图为:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.职责链模式的结构图如下: 在ANDROID的输入管理系统中提交输入事件到视图时使用了职责链模式,其类图所示: 类图中的ViewRootImpl类的内部类EarlyPostIme

经常使用的android设计模式

一般来说,经常使用的android设计模式有下面8种:单例.工厂.观察者.代理.命令.适配器.合成.訪问者. 单例模式:目的是为了让系统中仅仅有一个调用对象,缺点是单例使其它程序过分依赖它,并且不同单例执行在不同进程中.使得维护困难: 工厂模式:生产固定的一些东西,如抽象类,缺点是产品改动麻烦:如喜欢动作片和爱情片的人分别向server发出同一个请求.就能够得到他们想看的影片集,相当于不同对象进行同一请求,需求均得到满足. 观察者模式:就是多个对象对一个对象进行监控,如缓存: 代理模式:自己的事