`

Java内置的观察者模式

阅读更多
1.定义一个可观察者WeatherData,继承了java.util.Observable类
package pattern.javaObserver;

import java.util.Observable;

public class WeatherData extends Observable{

	private float temperature;
	private float humidity;
	private float pressure;

	public void measuarementsChanged(){
		setChanged();
		notifyObservers();
	}
	public void setWeatherData(float temperature,float humidity,float pressure){
		this.temperature = temperature;
		this.humidity = humidity;
		this.pressure = pressure;
		measuarementsChanged();
	}
	
	public float getTemperature() {
		return temperature;
	}
	
	public float getHumidity() {
		return humidity;
	}
	
	public float getPressure() {
		return pressure;
	}
}

2,.自定义一个定义显示接口DisplayElement。
package pattern.observer;

public interface DisplayElement {
	public void display();
}

3.定义一个观察者CurrentConditionDisplay,实现了java.util.Observer接口和自定义的显示接口DisplayElement。
package pattern.javaObserver;

import java.util.Observable;
import java.util.Observer;

import pattern.observer.DisplayElment;

public class CurrentConditionDisplay implements Observer , DisplayElement{
	Observable observable;
	private float temperature;
	private float humidify;
	
	public CurrentConditionDisplay(Observable o){
		this.observable = o;
		o.addObserver(this);
	}

	@Override
	public void display() {
		System.out.println("this is Current conditions:" + temperature +"F degrees and "+ humidify +"% humidity");
	}

	@Override
	public void update(Observable o, Object arg) {
		if(o instanceof WeatherData){
			WeatherData weatherData = (WeatherData) o;
			this.temperature = weatherData.getTemperature();
			this.humidify = weatherData.getHumidity();
			display();
		}
	}
}

4.测试程序
package pattern.javaObserver;

public class WeatherStation {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		WeatherData weatherData = new WeatherData();
		CurrentConditionDisplay c = new CurrentConditionDisplay(weatherData);
		weatherData.setWeatherData(50, 53, 50.3f);
		weatherData.setWeatherData(30, 33, 30.3f);
		weatherData.setWeatherData(40, 43, 40.3f);
	}

}

5.结果:
this is Current conditions:50.0F degrees and 53.0% humidity
this is Current conditions:30.0F degrees and 33.0% humidity
this is Current conditions:40.0F degrees and 43.0% humidity
分享到:
评论

相关推荐

    Java内置观察者模式

    ### Java内置观察者模式的实现 1. **主题类实现**:首先,创建一个类实现`Observable`接口,这样该类就成为了可观察的对象。例如: ```java import java.util.Observable; public class MySubject extends ...

    java内置观察者模式

    Java内置的观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。这种模式在Java中通过`java.util.Observable`和`java.util....

    java观察者模式观察者模式

    在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了对观察者模式的内置支持。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 ### `...

    java内置的观察者模式demo

    现在让我们看看如何使用Java内置的观察者模式: 1. 创建被观察者: 首先,我们需要创建一个扩展`Observable`的类。这个类将包含状态变化的逻辑,并在状态改变时调用`setChanged()`和`notifyObservers()`方法。 ``...

    Java编程之内置观察者模式实例详解

    Java编程之内置观察者模式实例详解主要介绍了Java编程之内置观察者模式,结合实例形式较为详细的分析了java内置观察者模式的原理、实现方法及相关注意事项。 一、观察者模式的概念 观察者模式是一种行为型设计模式...

    java 设计模式 观察者模式 简单实例 包括测试test类

    在Java中,观察者模式的实现通常基于Java的内置接口`java.util.Observer`和`java.util.Observable`。下面将详细解释观察者模式的概念、结构以及如何在Java中应用这个模式。 **观察者模式的核心概念:** 1. **主题...

    java观察者模式Demo

    在Java中,`java.util.Observable` 和 `java.util.Observer` 是内置支持观察者模式的类。 标题中的“java观察者模式Demo”指的是使用Java语言来演示观察者模式的应用。通常,这个Demo会包含一个可观察的对象...

    java实现观察者模式

    在Java中,观察者模式可以通过Java的内置API `java.util.Observable` 和 `java.util.Observer` 类来实现。`Observable` 类代表被观察的对象,而 `Observer` 接口则表示观察者。以下是对这两个关键类的详细解释: 1....

    观察者模式java实现观察者设计模式

    在Java中,我们可以利用Java提供的内置监听器机制来实现观察者模式,例如`ApplicationListener`和`ApplicationEvent`,这两个类主要用于Swing或JavaFX应用程序中的事件处理。 首先,我们来看`ApplicationListener`...

    java实现观察者模式-Java内置的观察者模式(基于Observable和Observer)

    Java内置的Observable类和Observer接口提供了基本的观察者模式功能,你可以通过继承Observable类和实现Observer接口来使用

    运用MVC模式及观察者模式的java小程序

    在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...

    设计模式--观察者模式java例子

    在Java中,观察者模式可以通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现。`Observer`接口代表观察者,而`Observable`类代表被观察的对象,也称为主题(Subject)。下面将详细介绍这两个...

    java观察者模式实例

    在Java中,`java.util.Observable`和`java.util.Observer`接口提供了内置的支持来实现观察者模式。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。让我们详细解析这个实例: 1. **定义主题...

    设计模式之观察者模式Java实现

    在Java中,观察者模式通常通过Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 首先,...

    java 观察者模式经典案例

    在Java中,观察者模式是通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现的。 在"java 观察者模式经典案例"中,我们以报社和读者为例来讲解这一模式。假设报社是被观察者(Observable),...

    观察者模式代码(JAVA)

    在Java中,`java.util.Observable` 和 `java.util.Observer` 类是内置的支持观察者模式的类。`Observable` 类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细探讨这两个类以及如何使用它们来实现...

    java观察者模式demo----未使用java工具类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,标准的观察者模式实现是...

    设计模式实现——观察者模式

    4. **Java实现**:在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了观察者模式的标准实现。`Observable`类代表主题,`Observer`接口代表观察者。通过`addObserver()`添加观察者,`...

    java设计模式系列之观察者模式代码

    在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。

    观察者模式练习

    在Java中,观察者模式通常通过Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。下面我们将...

Global site tag (gtag.js) - Google Analytics