观察者模式具有以下组件(1) Subject 目标: 维护一系列的观察者,方便添加或者删除观察者(2) Observer 观察者 : 为那些在目标状态发生改变时需获取得通知的对象提供一个接口(3) ConcreteSubject 具体目标 : 状态发生改变时,向observer发出通知,储存Conc...
分类:
其他好文 时间:
2014-09-09 22:47:39
阅读次数:
246
假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户。 把通知这个动作抽象成一个接口。 public interface IService { void Notif(); }客户如果想获得通知,就需要实现以上的接口。这里的客户被看作是观察者。 public class CustomerA :...
分类:
其他好文 时间:
2014-09-07 07:37:04
阅读次数:
202
观察者模式,一句话概括,就是定义并维护对象之间的一对多关系。“定义”是指建立“一”与“多”之间的依赖关系;“维护”是指我们可以动态地解除依赖以及建立新的依赖。
分类:
其他好文 时间:
2014-09-05 19:44:01
阅读次数:
191
项目整体结构是这样的:
通过一些设备,实时检测各种类型的数据,新的数据以消息的形式通过Shuttle ESB传输。
Shuttle 服务器接收到消息,它会按照需求要求,对数据进行一定的加工处理,然后将消息注册到消息管理器(注意:这里的消息管理器,就是观察者中的主题)。而每一个显示终端就是一个观察者,当消息注册到消息管理器时,显示终端就会自动更新最新消息,然后在根据要求,进行显示。...
分类:
其他好文 时间:
2014-09-05 14:26:31
阅读次数:
315
观察者模式(Observer Pattern)在项目中经常会被使用到,也被叫做发布订阅模式,也就是说 观察者 = 发布者 + 订阅者
GoF的《设计模式》中对观察者是这样描述的:
Define a one-to-many dependency between objects so that when one object changes state, all its depende...
分类:
其他好文 时间:
2014-09-05 01:00:30
阅读次数:
373
第一步:定义观察者
public interface CheckVersionObserver {
/**
* 在MainActivity里面检测版本更新成功
* @param mainEntity
*/
public void onCheckNewVerSuccInMain(MainEntity mainEntity);
/**
* 检测新版本失败
* @pa...
分类:
移动开发 时间:
2014-09-04 10:33:19
阅读次数:
248
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式...
分类:
其他好文 时间:
2014-09-02 17:34:55
阅读次数:
285
* 简单来说,观察者模式=发布者+订阅者。下面是一个有关猎头的典型的例子。在下面这张图当中有两个角色:
* 猎头和寻找工作的人。找工作的人向猎头订阅,告知自己希望得到一份工作,当有新的工作机会的时候,
* 猎头就会把这个信息通知给曾经向他订阅过的人。
猎头接口:
package com.pattern.observer;
/**
* @author Qixuan.Chen
* 创...
分类:
编程语言 时间:
2014-09-02 15:58:54
阅读次数:
230
形象例子: 想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。观察者模式: 观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对.....
分类:
其他好文 时间:
2014-09-01 21:06:13
阅读次数:
300
在事件驱动的环境中,比如浏览器这种持续寻求用户关注的环境中,观察者模式是一种管理人与其任务(确切的讲,是对象及其行为和状态之间的关系)之间的关系的得力工具。用javascript的话来讲,这种模式的实质就是你可以对程序中某个对象的状态进行观察,并且在其发生变化时可以得到通知。观察者模式中存在俩个角色...
分类:
其他好文 时间:
2014-09-01 12:31:13
阅读次数:
294