`
EricFirstMan
  • 浏览: 6610 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java中的Observer和Observable

 
阅读更多

Java 中的Observable 类和 Observer 接口。

(1) Observable 类代表 被观察者 (java.util.Observable )

主要方法有:

void setChanged() : 设置被观察者的状态已经被改变
void addObserver(Observer observer) : 添加观察者
int countObservers() : 返回所有观察者的数目
void deleteObserver(Observer observer) :删除指定观察者
void deleteObservers() : 删除所有观察者
boolean hasChanged() : 被观察者的状态是否被改变,如果是则返回true,否则返回false
void notifyObservers() : 通知所有观察者

void notifyObservers(Object arg) : 通知所有观察者(参数一般设定为被改变的属性)
void clearChanged() :清除被观察者状态的改变

(2) Observer 接口代表 观察者 (java.util.Observer )

void update(Observable observable, Object arg) :当 被观察者 调用 notifyObservers() 方法
时,会根据被观察者的 hasChanged() 方法 来判断 它的状态是否被改变, 如果被观察者的状态被改变了,则
会调用 观察者 的 update 方法,参数 observable 为 被观察者对象, arg 为调用 notifyObservers( Object arg ) 时传入的参数 arg ,如果调用的是 notifyObservers() 方法, 则 arg 为 null。

 

下面给出示例代码:

1> 观察者,观察股票动态

 

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

public class Broker implements Observer {
	private String name;

	public Broker(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	@Override
	public void update(Observable observable, Object arg) {//注意此处,update方法接收到了 状态改变的对象、改变的状态 两个参数,
        //这意味着我们可以有两种方式过去改变的信息,一中是被观察者”推“给观察者(如:arg),另一种是观察者从被观察者”拉“过来(被观察者有公开方法,如:name)
		if (observable instanceof Stock && arg instanceof Float) {
			System.out.println(this.name + " 说 : "
					+ ((Stock) observable).getName() + "涨到 " + arg + "元了 !");
		}
	}
}

 2>被观察者,股票

import java.util.Observable;

public class Stock extends Observable {
	private String name;
	private float price;

	public Stock(String name, float price) {
		this.name = name;
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		
		if(this.price < price){
			this.setChanged();
			this.notifyObservers(price);
			this.price = price;
		}
	}
}

 3>测试

public class Test {
	public static void main(String[] args) {
		Stock stock = new Stock("中华科技", 1.5f);
		Broker tom = new Broker("Tom");
		Broker leo = new Broker("Leo");
		stock.addObserver(tom);
		stock.addObserver(leo);

		stock.setPrice(1.6f);
		stock.setPrice(1.7f);
		stock.setPrice(1.8f);
	}
}
 

 

分享到:
评论

相关推荐

    MVC小例子 使用Java类库observer和Observable

    在"Java类库observer和Observable"的上下文中,`Observer`和`Observable`是Java标准库中的接口和类,它们实现了观察者模式,这是MVC模式中的一个重要组成部分。观察者模式允许一个对象(观察者)注册到另一个对象...

    observable-observer

    在Java中,`Observable`类和`Observer`接口是内置的实现,用于创建这种观察者模式。现在我们来详细探讨`Observable`和`Observer`的原理以及如何手动实现简单的`MyObservable`和`MyObserver`。 首先,`Observable`类...

    java面试题大全

    - **观察者模式**:了解Java中Observer和Observable类的应用。 - **装饰者模式**:理解如何在不改变原有类的情况下增加功能。 6. **网络编程** - **Socket通信**:理解TCP和UDP协议,能编写简单的客户端和服务端...

    23种设计模式的java实现

    Java中Observer和Observable类用于实现此模式。 14. **命令模式**:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 15. **访问者模式**...

    设计模式应用场景介绍&基础示例

    Java中Observer和Observable接口就是观察者模式的实现。 23. **中介者模式**:用一个中介对象协调一组对象之间的交互,降低对象间的耦合性。 以上23种设计模式是软件开发中的基础工具,理解并熟练运用它们,可以...

    Observable与Observer

    在IT行业中,`Observable`与`Observer`是Java编程语言中的两个重要概念,它们是JavaFX和Java.util.Observable库的一部分,用于实现观察者模式。观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个...

    Java观察者设计模式(Observable和Observer)

    在Java中,观察者模式通过`java.util.Observable`类和`java.util.Observer`接口得以实现。 一、观察者模式介绍 观察者模式的核心在于建立一种对象间的依赖关系,这种关系使得当一个对象(被观察者)的状态发生改变...

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

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

    ObserverPattern

    在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了对观察者模式的内置支持。`Observable`类代表被观察的对象,它可以添加、删除观察者,并在状态改变时通知它们。`Observer`接口则定义了观察者...

    Observer模式

    在Java中,Observer模式主要通过java.util.Observable和java.util.Observer接口来实现。Observable类代表被观察的对象,Observer接口定义了观察者的基本行为。当Observable对象的状态发生变化时,会调用Observer接口...

    java设计模式之Observer参考.pdf

    在Java中,Observer模式通过`java.util.Observable`和`java.util.Observer`接口实现。 在给定的文件中,我们看到一个具体的Observer模式应用例子,涉及到`Product`类和两个观察者`NameObserver`和`PriceObserver`。...

    java设计模式之Observer[整理].pdf

    在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了内置的支持来实现这个模式。 首先,我们创建一个被观察的对象,即`Observable`的子类。在这个例子中,我们有一个`Product`类,代表网上商店的...

    observer_JavaDesignPattern_

    在Java中,`java.util.Observable` 类和 `java.util.Observer` 接口是观察者模式的标准实现。`Observable` 类代表被观察的对象,它可以被任何数量的观察者监视。当`Observable`对象的状态发生变化时,它会调用`...

    Observer例子

    在Java中,我们可以使用Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现Observer模式。主题类通常继承`Observable`,而观察者则实现`Observer`接口。当主题状态改变时,调用`Observable`的`...

    观察者模式源代码_java

    在Java中,观察者模式的实现通常依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则是观察者的接口。以下是对这两个关键组件的详细解释: 1. `...

    OBserver模式设计实现

    在Java中,`java.util.Observable`和`java.util.Observer`是内置的支持观察者模式的类。你可以创建一个类继承`Observable`,并在需要时调用`setChanged()`和`notifyObservers()`方法来通知观察者。同时,观察者实现`...

    Observer.zip

    在Java中,观察者模式通过`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将深入探讨这两个关键组件以及如何使用它们。 1. *...

    ActionBar+ViewPager+Fragment+Observable

    `Observable`是Java的观察者模式(Observer Pattern)实现,它是`java.util.Observable`类的实例。在Android中,`Observable`常用于组件之间的通信,特别是当需要监听数据变化时。例如,当你有一个数据模型需要实时...

    Java内置观察者模式

    在Java中,通常通过实现`java.util.Observable`接口来标识一个主题。 2. **观察者(Observer)**:依赖主题的对象,当主题状态变化时,会被通知到。Java中,观察者需要实现`java.util.Observer`接口。 3. **注册...

    Observer(观察者模式)学习源码

    在Java中,Observer模式主要通过java.util.Observable和java.util.Observer接口来实现。Observable类代表被观察的对象,Observer接口则代表观察者。以下是对这两个核心组件的详细说明: 1. **Observable类**: - `...

Global site tag (gtag.js) - Google Analytics