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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java(发布/订阅模式)

發布時間:2023/12/10 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java(发布/订阅模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、概述
觀察者模式又稱為發布/訂閱(Publish/Subscribe)模式

觀察者設計模式涉及到兩種角色:主題(Subject)和觀察者(Observer)

(1)Subject模塊
Subjec模塊有3個主要操作

addObserver():注冊添加觀察者(申請訂閱)
deleteObserver():刪除觀察者(取消訂閱)
notifyObserver():主題狀態發生變化時通知所有的觀察者對象
(2)Oserver模塊
Oserver模塊有1個核心操作update(),當主題Subject狀態改變時,將調用每個觀察者的update()方法,更新通知。

(3)UML圖
https://www.processon.com在線畫的UML圖

2、簡單樣例
(1)主題接口

package observer;public interface Subject {//添加觀察者void addObserver(Observer obj);//移除觀察者void deleteObserver(Observer obj);//當主題方法改變時,這個方法被調用,通知所有的觀察者void notifyObserver(); }

(2)觀察者接口

package observer;public interface Observer {//當主題狀態改變時,更新通知public void update(int version); }

(3)主題實現類,某某雜志

package observer;import java.util.ArrayList; import java.util.List;public class MagazineSubject implements Subject{//存放訂閱者private List<Observer> observers=new ArrayList<Observer>();//期刊版本private int version;@Overridepublic void addObserver(Observer obj) {observers.add(obj);}@Overridepublic void deleteObserver(Observer obj) {int i = observers.indexOf(obj);if(i>=0){observers.remove(obj);}}@Overridepublic void notifyObserver() {for(int i=0;i<observers.size();i++){Observer o=(Observer)observers.get(i);o.update(version);}}//該雜志發行了新版本public void publish(){//新版本this.version++;//信息更新完畢,通知所有觀察者notifyObserver();} }

(4)觀察者實現類

package observer;public class CustomerObserver implements Observer{//訂閱者名字private String name;private int version;public CustomerObserver(String name){this.name = name;}@Overridepublic void update(int version) {this.version=version;System.out.println("該雜志出新版本了");this.buy();}public void buy(){System.out.println(name+"購買了第"+version+"期的雜志!");}}

(5)測試類

package observer;public class Main{public static void main(String[] args) {//創建主題(被觀察者)MagazineSubject magazine = new MagazineSubject();//創建三個不同的觀察者CustomerObserver a = new CustomerObserver("A");CustomerObserver b = new CustomerObserver("B");CustomerObserver c = new CustomerObserver("C");//將觀察者注冊到主題中magazine.addObserver(a);magazine.addObserver(b);magazine.addObserver(c);//更新主題的數據,當數據更新后,會自動通知所有已注冊的觀察者magazine.publish();} }

執行結果

該雜志出新版本了 A購買了第1期的雜志! 該雜志出新版本了 B購買了第1期的雜志! 該雜志出新版本了 C購買了第1期的雜志!

3、大數據運維平臺中的觀察者模式

總結

以上是生活随笔為你收集整理的Java(发布/订阅模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。