Observable和Observer
前一段时间看了一下Observable和Observer的事件框架,觉的还不错,先记下来
Observer接口和Observable类可用于Model-View模式中:当Model中的数据发生变化时,Model主动通知View此变化。
其中Model用Observable类来实现,而View可以用实现了Observer接口的类来实现。举例如下
import java.util.Observable;
import java.util.Observer;
/**
* @author
* 观察员
*
*/
public class Human implements Observer {
private String name;
public Human() {
super();
}
public Human(String name) {
super();
this.name = name;
}
public void update(Observable o, Object arg) {
//获取被观察对象当前的状态
System.out.println(((InvalidMan)o).getState());
//向当前观察者通知消息
System.out.println(name + arg);
}
}
|
import java.util.Observable;
/**
* 被观察者
**/
public class InvalidMan extends Observable {
private int state;
//差
public final static int STATE_BAD = 0;
//死
public final static int STATE_DEAD = -1;
//良好
public final static int STATE_FINE = 1;
public InvalidMan() {
super();
}
public InvalidMan(int state) {
this.state = state;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public void changeState(int state){
if(this.state != state)
{
this.state = state;
this.setChanged();
if(STATE_BAD == state || STATE_DEAD == state)
{
this.notifyObservers("...危险...");
}
else if(STATE_FINE == state)
{
this.notifyObservers("...准备出院...");
}
}
else
{
this.notifyObservers("...老样子...");
}
}
}
|
测试DEMO
import java.util.Observer;
public class ObserverDemo
{
public ObserverDemo()
{
}
public static void main(String[] args)
{
//被观察者
InvalidMan o1 = new InvalidMan(InvalidMan.STATE_BAD);
//观察员
Observer oo1 = new Human("医生");
//观察员
Observer oo2 = new Human("护士");
//观察员
Observer oo3 = new Human("家人");
//向被观察对象注册观察员
//为病人注册 观察员:医生,护士,家人
o1.addObserver(oo1);
o1.addObserver(oo2);
o1.addObserver(oo3);
//更改被观察对象的状态
o1.changeState(InvalidMan.STATE_DEAD);
o1.changeState(InvalidMan.STATE_BAD);
o1.changeState(InvalidMan.STATE_FINE);
}
}
|
分享到:
相关推荐
Java内置的Observable类和Observer接口提供了基本的观察者模式功能,你可以通过继承Observable类和实现Observer接口来使用
在Java中,`Observable`类和`Observer`接口是内置的实现,用于创建这种观察者模式。现在我们来详细探讨`Observable`和`Observer`的原理以及如何手动实现简单的`MyObservable`和`MyObserver`。 首先,`Observable`类...
在Java中,观察者模式通过`java.util.Observable`类和`java.util.Observer`接口得以实现。 一、观察者模式介绍 观察者模式的核心在于建立一种对象间的依赖关系,这种关系使得当一个对象(被观察者)的状态发生改变...
在IT行业中,`Observable`与`Observer`是Java编程语言中的两个重要概念,它们是JavaFX和Java.util.Observable库的一部分,用于实现观察者模式。观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个...
在Java中,除了标准库提供的Observable和Observer之外,还可以使用第三方库如Guava的EventBus或Spring框架的ApplicationEventPublisher接口来实现观察者模式,这些库提供了更高级的功能和更好的扩展性。 总之,...
RxJava 的核心概念是 Observable 和 Observer。Observable 是事件的生产者,而 Observer 是事件的消费者。Observable 负责生产事件,而 Observer 负责消费事件。在 RxJava 中,Observable 和 Observer 之间的关系是...
本示例中的核心在于利用Broadcast Receiver接收系统的网络变更事件,并通过Observable和Observer模式来通知那些关心网络状态的应用组件。 1. **创建Broadcast Receiver**:首先需要创建一个Broadcast Receiver,用...
手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和Observer,从JDK 1.0里,它们就一直在那里。从某种程度上说,它简化了Observer模式的开发,...
- **Subscribe(订阅)**:连接Observable和Observer,当Observable有新的数据时,Observer会收到通知。 - **Operators(操作符)**:RxJava提供了一系列的操作符,如map、filter、merge等,用于对数据流进行转换...
2. **Observer**:订阅Observable的实体,用于接收和处理Observable发出的数据。 3. **subscribe()**:用于连接Observable和Observer,开始数据流的传递。 4. **Operators**:RxJS提供了丰富的转换和操作符,如map、...
3. **subscribe(订阅)**:是连接 Observable 和 Observer 的桥梁。调用 Observable 的 subscribe 方法,传入 Observer 实例,即可建立订阅关系。 4. **Operator(操作符)**:是 RxJava 提供的一系列工具,用于...
在RxJava中,我们通过Observable(可观察者)和Observer(观察者)之间的交互来实现这一目标。Observable能够发出事件,而Observer则对这些事件作出响应。 RxJava的核心组件包括: 1. Observable:这是数据的生产者...
在RxJava中,我们有Observable(可观察者)和Observer(观察者),它们之间通过subscribe()方法建立连接。序列则指的是RxJava中的数据流,它允许我们以声明式的方式处理数据,包括创建、组合和操作。 1. **创建...
- **Subscription(订阅)**:连接Observable和Observer的一种方式,可以用来取消订阅。 - **Scheduler(调度器)**:控制Observable和Observer执行的线程环境。 #### 二、RxJava基本使用方法 **2.1 创建...
RxJava的核心组件包括Observable和Observer。Observable是数据的生产者,可以发布一系列的数据事件;Observer则是数据的消费者,订阅Observable后,每当Observable有新的数据发布时,Observer就会接收到相应的通知。...
3. **Subscription(订阅)**:当 Observable 和 Observer 之间建立连接时,会产生一个 Subscription 对象。可以通过这个对象来管理订阅,如取消订阅。 4. **Operators(操作符)**:RxJava 提供了大量的操作符,...
Observable发出数据,Observer消费数据,Subscription管理订阅关系,而Subject可以同时作为Observable和Observer。 3. **Retrofit与RxJava2的结合**: - 使用`@GET`、`@POST`等注解的方法返回类型改为`Observable...
RxJava的核心概念是观察者模式的扩展,它引入了Observable(可观察者)和Observer(观察者)的概念,以及一系列操作符,如map、filter、concat、merge等,使得开发者能够以声明式的方式处理事件和数据流。...
在"Java类库observer和Observable"的上下文中,`Observer`和`Observable`是Java标准库中的接口和类,它们实现了观察者模式,这是MVC模式中的一个重要组成部分。观察者模式允许一个对象(观察者)注册到另一个对象...