您的位置:首页 > 编程语言 > Java开发

RxJava系列之一:观察者模式

2016-01-31 16:50 369 查看
一.什么是RxJava

RxJava是一个采用观察者设计模式的变成框架,自然少不了对于观察者设计模式的讲解。下面就简单先对观察者设计模式进行简单的介绍。

二.观察者(Observer)设计模式简介

(一).基本原理描述

Observer模式是二十三中Java编程设计模式中的一种。

Observer设计模式的有点:解除了观察者与被观察者之间的耦合关系,被观察者不需要知道观察者的任何信息。被观察者只需要允许观察者监听相应的事件,被观察者可以有多个观察者。简单的理解为观察者实在监听被观察者状态的改变。被观察者简单的将事件传递给每一个观察者。

(二).代码简单实现

a.定义一个观察者接口

public interface Observer {
public void update();
}

b.两个实现类

public class Observer1 implements Observer {

@Override
public void update() {
System.out.println("观察者1");
}
}

public class Observer2 implements Observer {
@Override
public void update() {
System.out.println("观察者2");
}

}

Subject接口及实现类:

public interface Subject {
/*增加观察者*/
public void add(Observer observer);
/*删除观察者*/
public void del(Observer observer);
/*通知所有的观察者*/
public void notifyObservers();
/*自身的操作*/
public void operation();
}

public abstract class AbstractSubject implements Subject {

private Vector<Observer> vector = new Vector<Observer>();
@Override
public void add(Observer observer) {
vector.add(observer);
}
@Override
public void del(Observer observer) {
vector.remove(observer);
}
@Override
public void notifyObservers() {
Enumeration<Observer> enumo = vector.elements();
while(enumo.hasMoreElements()){
enumo.nextElement().update();
}
}
}

public class MySubject extends AbstractSubject {
@Override
public void operation() {
System.out.println("自身操作");
notifyObservers();
}

}

程序主入口:

public class ObserverTest {
public static void main(String[] args) {
Subject sub = new MySubject();
sub.add(new Observer1());
sub.add(new Observer2());

sub.operation();
}
}

最后输出结果为:
自身操作

观察者1

观察者2

最后代码没有多复杂,多加用断点跟进程序就能接单的了解观察者模式!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: