RxJava系列之一:觀察者模式
阿新 • • 發佈:2019-02-02
一.什麼是RxJava
RxJava是一個採用觀察者設計模式的變成框架,自然少不了對於觀察者設計模式的講解。下面就簡單先對觀察者設計模式進行簡單的介紹。
二.觀察者(Observer)設計模式簡介
(一).基本原理描述
Observer模式是二十三中Java程式設計設計模式中的一種。
RxJava是一個採用觀察者設計模式的變成框架,自然少不了對於觀察者設計模式的講解。下面就簡單先對觀察者設計模式進行簡單的介紹。
二.觀察者(Observer)設計模式簡介
(一).基本原理描述
Observer模式是二十三中Java程式設計設計模式中的一種。
Observer設計模式的有點:解除了觀察者與被觀察者之間的耦合關係,被觀察者不需要知道觀察者的任何資訊。被觀察者只需要允許觀察者監聽相應的事件,被觀察者可以有多個觀察者。簡單的理解為觀察者實在監聽被觀察者狀態的改變。被觀察者簡單的將事件傳遞給每一個觀察者。
(二).程式碼簡單實現
a.定義一個觀察者介面
- publicinterface Observer {
- publicvoid update();
- }
- publicclass Observer1 implements Observer {
- @Override
- publicvoid update() {
- System.out.println("觀察者1");
- }
- }
- publicclass Observer2 implements Observer {
- @Override
- publicvoid update() {
- System.out.println("觀察者2"
- }
- }
Subject介面及實現類:
- publicinterface Subject {
- /*增加觀察者*/
- publicvoid add(Observer observer);
- /*刪除觀察者*/
- publicvoid del(Observer observer);
- /*通知所有的觀察者*/
- publicvoid notifyObservers();
- /*自身的操作*/
- publicvoid operation();
- }
- publicabstractclass AbstractSubject implements Subject {
- private Vector<Observer> vector = new Vector<Observer>();
- @Override
- publicvoid add(Observer observer) {
- vector.add(observer);
- }
- @Override
- publicvoid del(Observer observer) {
- vector.remove(observer);
- }
- @Override
- publicvoid notifyObservers() {
- Enumeration<Observer> enumo = vector.elements();
- while(enumo.hasMoreElements()){
- enumo.nextElement().update();
- }
- }
- }
- publicclass MySubject extends AbstractSubject {
- @Override
- publicvoid operation() {
- System.out.println("自身操作");
- notifyObservers();
- }
- }
程式主入口:
- publicclass ObserverTest {
- publicstaticvoid main(String[] args) {
- Subject sub = new MySubject();
- sub.add(new Observer1());
- sub.add(new Observer2());
- sub.operation();
- }
- }
自身操作
觀察者1
觀察者2
最後程式碼沒有多複雜,多加用斷點跟程序序就能接單的瞭解觀察者模式!