日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 观察者的框架,Android 架构师7 设计模式之观察者模式

發(fā)布時間:2025/5/22 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 观察者的框架,Android 架构师7 设计模式之观察者模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

當對象間存在一對多關系時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬于行為型模式。

觀察者模式.png

觀察者模式

被觀察者,即主題角色:

public abstract class AbstractSubject {

private List observers;

AbstractSubject() {

observers = new ArrayList<>();

}

public void attach(IObserver observer) {

observers.add(observer);

}

public void detach(IObserver observer) {

observers.remove(observer);

}

public void notifyObserver(String content) {

for (IObserver observer : observers) {

observer.update(content);

}

}

}

具體主題ConcreteSubject ,暫時沒有任何代碼:

public class ConcreteSubject extends AbstractSubject {

}

觀察者接口IObserver :

public interface IObserver {

void update(String content);

}

觀察者具體類ConcreteObserver :

public class ConcreteObserver implements IObserver {

private final String observerName;

public ConcreteObserver (String observerName) {

this.observerName = observerName;

}

@Override

public void update(String content) {

System.out.println(observerName + "接收到了消息:" + content);

}

}

客戶端Client 調用:

public class Client {

public static void main(String[] args) {

AbstractSubject subject = new ConcreteSubject();

IObserver observer1 = new ConcreteObserver("觀察者1號");

IObserver observer2 = new ConcreteObserver("觀察者2號");

IObserver observer3 = new ConcreteObserver("觀察者3號");

subject.attach(observer1);

subject.attach(observer2);

subject.attach(observer3);

subject.notifyObserver("被觀察者發(fā)生了變化");

}

}

主體思想就是:被觀察者調用attach方法將觀察者放入自己的集合中,當自己的數(shù)據(jù)改變時,調用notifyObserver方法去遍歷循環(huán),從而調用集合中的每個觀察者的update方法,完成數(shù)據(jù)更新變化的通知。

運行結果是:

觀察者1號接收到了消息:被觀察者發(fā)生了變化

觀察者2號接收到了消息:被觀察者發(fā)生了變化

觀察者3號接收到了消息:被觀察者發(fā)生了變化

觀察者模式在Android中的應用

Android中的各種監(jiān)聽器都是應用的觀察者模式,RxJava框架也是應用的觀察者模式。

總結

觀察者模式在Android中應用的還是很廣泛的,觀察者模式中觀察者和被觀察者是抽象耦合的,避免了緊耦合等問題,但是如果被觀察者較多或者間接被觀察者較多的情況下,會導致遍歷所花的時間較多,當然這個數(shù)量級恐怕很少能達到。至于某些博客說的觀察者無法知道被觀察者數(shù)據(jù)是如何變化的是觀察者的缺點,這點我并不能茍同,我認為這正是封裝的好處,你無需知道內(nèi)部是如何進行的,這并不是觀察者模式的缺點,反而是封裝的好處。

喜歡本篇博客的簡友們,就請來一波點贊,您的每一次關注,將成為我前進的動力,謝謝!作者:zhang_pan

總結

以上是生活随笔為你收集整理的android 观察者的框架,Android 架构师7 设计模式之观察者模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。