Java作为一种面向对象的开发语言,对实设计模式提供了良好的支持,并且提供了许多默认的实现,比如:通过Java中的Observable类和Observer接口可以方便的实现观察者模式。 中国自学编程网 www.zxbc.cn
下面我们就用一个实际的例子来说明:日常生活中说起观察者,最常见的例子可能就是天气预报,在这里我们的观察对象是地球,而我们是通过发射气象卫星这个观察者来检测地球气象变化的。
所以这个例子中涉及三个对象:
地球 (Earth): 被观察对象
气象卫星(Satellite): 观察者
气象局(WeatherService): 客户端调用
被观察对象:地球 (Earth)
import java.util.Observable;
/** */ /**
* 被观察对象:地球
*
* @author zjun
* @version 1.0 create on 2006-5-18 9:42:45
*/
public class Earth extends Observable {
private String weather = " 晴朗 " ;
/** */ /**
* @return Returns the weather.
*/
public String getWeather() {
return weather;
}
/** */ /**
* @param weather
* The weather to set.
*/
public void setWeather(String weather) {
this .weather = weather;
// 设置变化点
setChanged();
notifyObservers(weather);
}
}
[注意] 在需检测的对象前需要设置变化点setChanged()和通知观察者notifyObservers(),这两个函数是由Observable类实现的,封装了观察者模式实现的细节。
观察者:气象卫星(Satellite)
import java.util.Observable;
import java.util.Observer;
/** */ /**
* 观察对象:气象卫星
*
* @author zjun
* @version 1.0 create on 2006-5-18 9:46:30
*/
public class Satellite implements Observer {
private String weather;
public void update(Observable obj, Object arg) {
weather = (String) arg;
// 捕获天气变化情况,反馈给检测者
System.out.println( " 近期天气变化: " + weather);
}
}
客户端调用:气象局(WeatherService)
/** */ /**
* 客户端调用:天气预报
*
* @author zjun
* @version 1.0 create on 2006-5-18 9:57:19
*/
public class WeatherService {
/** */ /**
* @param args
*/
public static void main(String[] args) {
Earth earth = new Earth();
Satellite satellite = new Satellite();
// 发射气象卫星
earth.addObserver(satellite);
System.out.println( " 天气预报: " );
System.out.println( " ------------ " );
earth.setWeather( " 台风‘珍珠’逼近 " );
earth.setWeather( " 大到暴雨 " );
earth.setWeather( " 天气炎热 " );
}
}
[运行结果]
天气预报:
------------
近期天气变化:台风‘珍珠’逼近
近期天气变化:大到暴雨
近期天气变化:天气炎热
分享到:
相关推荐
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
观察者模式Observer: 以手机号码为例,老师的手机号码存在学生的手机里,若老师的手机号改变,她会发一条短信通知每个学生自己手机号变了
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
Java内置的Observable类和Observer接口提供了基本的观察者模式功能,你可以通过继承Observable类和实现Observer接口来使用
在设计一组依赖的对象与它们所依赖的对象之间一致(同步)的交流模型时,观察者模式(Observer Pattern)很有用。它可以使依赖对象的状态与它们所依赖的对象的状态保持同步。这组依赖的对象指的是观察者(Observer)...
观察者模式(Observer Pattern)是一种对象行为型设计模式,它定义了对象之间的一对多依赖关系。 当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现分布式事件处理系统...
观察者 Observer 模式定义:在对象之间定义了一对多的依赖关系 这样一来 当一个对象改变状态时 依赖它的对象都会收到通知并自动跟新 Java已经提供了对观察者Observer模式的默认实现 Java对观察者模式的支持主要体现...
一个很简单但是明了的java观察者模式的demo。备注几乎每行都加了。
Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...
开发中常用 设计模式 开发者模式,欢迎大家学习。 博客:http://blog.csdn.net/q610098308/article/details/76143959
Observer模式定义对象间的一对多的依赖关系,当一个对象(被观察者)的状态发生改变...从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(subject)角色。
基于观察者模式和单例模式的java聊天室 面向对象设计,抽象,封装,代理,组合和继承 适合理解java面向对象,socket编程,观察者模式和单例模式
这是java程序言必学的一个设计模式,这个小例子阐述明确,通俗易懂。
主要介绍了Java设计模式之观察者模式(Observer模式)介绍,Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解,需要的朋友可以...
观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer
.java文件。观察者模式的例子。可以运行,同时帮助理解观察者模式。
NULL 博文链接:https://jacky-dai.iteye.com/blog/1132063
观察者设计模式观察者<Observer>模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的...