RxJava是一个采用观察者设计模式的变成框架,自然少不了对于观察者设计模式的讲解。下面就简单先对观察者设计模式进行简单的介绍。
二.观察者(Observer)设计模式简介
(一).基本原理描述
Observer模式是二十三中Java编程设计模式中的一种。
Observer设计模式的有点:解除了观察者与被观察者之间的耦合关系,被观察者不需要知道观察者的任何信息。被观察者只需要允许观察者监听相应的事件,被观察者可以有多个观察者。简单的理解为观察者实在监听被观察者状态的改变。被观察者简单的将事件传递给每一个观察者。
(二).代码简单实现
a.定义一个观察者接口
- public interface Observer {
- public void update();
- }
- 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
最后代码没有多复杂,多加用断点跟进程序就能接单的了解观察者模式!