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接口来使用
观察者模式介绍:Observable和Observer原理分析,手动实现简单MyObservable和MyObserver
主要介绍了 Java观察者设计模式(Observable和Observer)的相关资料,需要的朋友可以参考下
手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和Observer,从JDK 1.0里,它们就一直在那里。从某种程度上说,它简化了Observer模式的开发,...
NULL 博文链接:https://best-sheng.iteye.com/blog/1024369
观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer
这是最简单的一个MVC实例,通过它你可以了解MVC的基本工作原理。
上游和下游就分别对应着RxJava中的Observable和Observer;两者之间的连接就对应着subscribe() 只有当上游和下游建立连接后(调用subscribe()),上游才会开始发送事件 Demo //创建一个上游Observable. Observable...
的Observable和Observer接口的简单实现。 接口的实现允许: 异步代码来创建项目。 观察员捕获事件并将其转变为项目。 Java的Stream框架非常有用,但是这些类通过实现缺少的生产者/消费者功能使它变得更好。 ...
SimpleWebServer原型验证模块间通信同步模式下用synchronized同步块,Lock接口,Object自带的wait/yield/sleep/notify...观察者模式也是callback,在原来上下级直接耦合中间插入一层Observable和Observer,隔离性更好,
禅宗可观察 Observables for JavaScript的... let observable = new Observable ( observer => { // Emit a single value after 1 second let timer = setTimeout ( ( ) => { observer . next ( 'hello' ) ; obs
这个工程是Observable与Observer的经典运用,是android实现拖拽图片的操作
从Observer到Observable:使用Functional Swift提升复杂iOS项目的可维护性
从Observer到Observable:使用Functional Swift提升复杂iOS项目的可维护性.pdf
这个工程是Observable与Observer的经典运用,是android实现的单指拖动放大缩小图片的操作
这个现在对人来说都是相当特定的 - 理想情况下它应该支持 ES7 observable 接口,但这是有效的。 请参阅的讨论。去做 测试 可运行的例子 包含invariant用法在 DOM 元素上使用它。 import observer from 'react-...
这样一来 当一个对象改变状态时 依赖它的对象都会收到通知并自动跟新 Java已经提供了对观察者Observer模式的默认实现 Java对观察者模式的支持主要体现在Observable类和Observer接口 ">观察者 Observer 模式定义:在...
rxjs文件rxjs文档可观察的可观察特性Observable是惰性的,可以同步或者异步返回零个或多个值的对象惰性的:被动的,只有被观察者订阅才会执行多值的:在observable中包含的订阅某些函数中,可以发送多个值observer ....
JDK里提供的observer设计模式的实现由java.util.Observable类和 java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标...
Python-observable-collections介绍这是 Python 可观察集合的实现,它允许将处理程序附加到 Python 集合,以便在底层数据发生更改时收到通知。 目前支持 ObservableSet、ObservableList 和 ObservableDict。 所有三...