观察者模式定义了一对多的依赖关系,让一个或多个观察者对象订阅一个主题对象。主题对象状态上或内容上的变化会通知观察者。主题对象及观察者对象拥有相对的独立性。
与<策略模式个人理解>中相似,观察者对象实现了一个观察者接口,这样就把与主题对象独立开来。具体观察者的个数和内容可以自定义增加或者删除。
主题是一个抽象类或者接口,有addObserver、deleteObserver、notifyObservers方法。具体的主题对象实现抽象主题。
public interface Observer{
public void update(Observable obs,Object arg);
}
public class ConcreteObserver implements Observer{
public void update(Observable obs,Object arg){
//更新状态
if(obs instanceof ConcreteObservable){
ConcreteObservable observable = (ConcreteObservable)obs;
System.out.println(obs.getMessage());
}
}
}
public interface Observable{
public void addObserver(Observer ob);
public void deleteObserver(Observer ob);
public void notifyObservers(Object arg);
}
public class ConcreteObservable implements Observable{
private ArrayList observers;
private String message;
public ConcreteObservable(){
observers = new ArrayList();
}
public void addObserver(Observer ob){
observers.add(ob);
}
public void deleteObserver(Observer ob){
int i = observers.indexOf(ob);
if(i>=0){
observers.remove(i);
}
}
public void notifyObservers(Object arg){
for(int i =0;i<observer.size();i++){
Observer observer = (Observer)observers.get(i);
observer.update(this,arg);
}
}
public void setMessage(String message){
this.message = message;
notifyObservers(null);
}
public String getMessage(){
return message;
}
}
需要指出的是观察者的update的方法接受主题对象obs,和内容对象arg。这样可以根据需求定制内容。
相关推荐
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...
个人针对构建者设计模式、回调和观察者设计模式写的一个Demo,方便大家理解编程设计思想,1分算是大家的鼓励分,希望可以给大家带来方便。
1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 1.4 分类 2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) ...17. 观察者模式 (Observer Pattern)
【例6.19】事件体系结构-观察者模式-温度显示 【例6.21】层次架构-软件测试 【例6.22】层次架构-银行- Access数据库 【例6.23】MVC架构-二手车拍卖-无观察者 【例6.24】MVC架构-二手车拍卖-观察者-3...
head-first-design-pattern—02-observer-pattern(观察者模式),融入了个人的见解,里面包含错误的实现和正确的标准实现,你可以对比学习,加深对模式的理解
设计模式之 Observer(观察者) 介绍如何使用 Java API 提供的现成 Observer 设计模式之 Iterator(迭代器) 这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入...
工厂模式、策略模式、观察者模式在iOS开发中的体现方式。 IOC、AOP、代理、切面、循环依赖等设计和实现原理。 此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计。...
2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...
作为中国IT产业的观察者和研究者,赛迪顾问充分运用自身的强大资源优势,长期追踪包括云计算在内的中国IT产业发展现状与未来趋势。以标准化、专业化、国际化的定义和方法,结合自身对中国IT产业的深刻理解,为产业链...
作为中国IT产业的观察者和研究者,赛迪顾问充分运用自身的强大资源优势,长期追踪包括云计算在内的中国IT产业 发展现状与未来趋势。以标准化、专业化、国际化的定义和方法,结合自身对中国IT产业的深刻理解,为产业...
最大的好处就是可扩展,这个思想其实早就有,想设计模式中的观察者模式,IOC/DI的思想,以及好莱坞原则,其实都是运用的这种松耦合,可扩展的模式设计的。所谓的松耦合,不是没有耦合,而是耦合到基础的框架,什么叫...
│ 高并发编程第二阶段13讲、使用观察者设计模式观察线程的生命周期.mp4 │ 高并发编程第二阶段14讲、单线程执行设计模式,有一个门,始终只能一个人通过-上.mp4 │ 高并发编程第二阶段15讲、单线程执行设计模式...
信息处理已被定义为“以观察者可检测到的任何方式对信息进行更改(处理),该过程描述了宇宙中发生的一切,从岩石下落到从计算机打印文本文件。数字计算机系统。” 人类社会早就意识到信息处理和共享对于追求物质、...
阿里云java sdk源码 #使用MVP+RxAndroid+DroiBaaS打造云后台App...整体的App架构选用MVP来搭建,结合最近比较火热的RxAndroid实现观察者事务模式就能够做到模块内部的高聚合和模块之间的低耦合,模块内被的高聚合。 由
仔细观察,别试图控制一切 架构师好比两面神 架构师当聚焦于边界和接口 助力开发团队 记录决策理由 挑战假设尤其是你自己的 分享知识和经验 模式病 不要滥用架构隐喻 关注应用程序的支持和维护 有舍才有得 先考虑...
这个理论使我们理解到,教学模式、教学方法要有针对性,不能千篇一律,搞一刀切,而要针对学生的不同智能组合所表现出来的差异,实行因"材"施教或因"才" 施教。多元智能理论告诉我们不可能用同一种教学模式使学生...
这段话说,治国者须观察天文,以明了时序之变化,又须观察人文,使天下之人均能遵从文明礼仪。在这里,“人文”与“化成天下”紧密联系,“文治教化”的思想已十分明确。 后由西汉刘向在其所著《说苑》中组合成...