博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式 (Observer)
阅读量:4050 次
发布时间:2019-05-25

本文共 1382 字,大约阅读时间需要 4 分钟。

-- Start

观察者模式又被称为发布-订阅<Publish/Subscribe>模式, 它通常应用在用户界面中, 一个典型的例子是当业务对象发生变化时, 通知用户界面, 从而实时刷新数据, 此时用户界面是观察者, 业务数据是被观察者. Java 通过 Observer(观察者) 和 Observable(被观察者) 为我们实现了一个观察者模式的框架, 下面是一个简单的例子.

import java.util.Observable;import java.util.Observer;public class Test {	public static void main(String[] args) throws Exception {		WeatherData wd = new WeatherData();		wd.addObserver(new WeatherGUI());		// 测试		for (int i = 0; i < 10; i++) {			wd.setTemperature(i);		}	}}// 天气对象 (被观察者)class WeatherData extends Observable {	public static String TEMPERATURE = "temperature";	private Integer temperature; // 温度	public Integer getTemperature() {		return temperature;	}	public void setTemperature(Integer newTemperature) {		Integer oldTemperature = temperature;		temperature = newTemperature;		if (oldTemperature != null && newTemperature != null && oldTemperature != newTemperature) {			setChanged(); // 设置变化标志位			notifyObservers(TEMPERATURE); // 通知观察者		}	}}// 天气GUI(观察者)class WeatherGUI implements Observer {	public void update(Observable o, Object arg) {		WeatherData wd = (WeatherData) o;		if (WeatherData.TEMPERATURE.equals(arg)) {			displayTemperature(wd.getTemperature()); // 得到通知后刷新温度		}	}	// 显示温度	private void displayTemperature(Integer temperature) {		System.out.println(temperature);	}}

-- 更多参见:

-- 声 明:转载请注明出处
-- Last Updated on 2012-09-13
-- Written by ShangBo on 2012-09-13
-- End

你可能感兴趣的文章
Windows IIS服务器CA认证安装
查看>>
Asp.net 中Excel通过模板导出中发布问题
查看>>
64位机器配置CA认证一些小问题
查看>>
SVN自动完全备份
查看>>
开发中的Warning原来也很有用
查看>>
Silverlight Toolkit例子代码中缺少System.Windows.Controls.Samples.Common.dll的解决办法
查看>>
项目经理培训后的一点感概
查看>>
vc学习之窗口大小发生变更时使控件自动摆放到合适的位置
查看>>
Oracle 获取系统日期时间,导出数据库
查看>>
黄巢的菊花,非常喜欢,贴出来共享一下
查看>>
在光纤环网中的b/s与c/s的比对
查看>>
根据程序名称和程序路径判断程序是否启动
查看>>
史记翻译-汉初三杰-萧何-萧相国世家第二十三
查看>>
史记翻译-汉初三杰-张良-留侯世家第二十五
查看>>
史记翻译-汉初三杰-韩信-淮阴侯列传第三十二
查看>>
帝王封赏之道和老板的封赏之道
查看>>
工作分解结构在软件开发中的应用
查看>>
关于系统崩溃后的Oracle恢复
查看>>
遭遇蚊子的獠牙,想起一种叫黄鸡婆的小虫子
查看>>
使用批处理命令给客户更新oracle数据库
查看>>