国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

觀察者模式

2019-11-11 04:26:49
字體:
供稿:網(wǎng)友

觀察者模式(又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,屬于行為型模式的一種,它定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。

簡單代碼實現(xiàn)

public interface Observer { public void update(String message);}public class Observable implements Observer { PRivate String name; public Observable(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + "-" + message); }}

核心接口,用于添加和刪除訂閱者,同時向訂閱者發(fā)送消息。

public interface Subject { /** * 增加訂閱者 * @param observer */ public void attach(Observer observer); /** * 刪除訂閱者 * @param observer */ public void detach(Observer observer); /** * 通知訂閱者更新消息 */ public void notify(String message);}

維護一個Observer列表

public class SubscriptionSubject implements Subject { private List<Observer> list = new ArrayList<Observer>(); @Override public void attach(Observer observer) { list.add(observer); } @Override public void detach(Observer observer) { list.remove(observer); } @Override public void notify(String message) { for (Observer observer : list) { observer.update(message); } }}public class Client { public static void main(String[] args) { SubscriptionSubject mSubscriptionSubject=new SubscriptionSubject(); Observable observable1=new Observable("xxx"); Observable observable2=new Observable("ooo"); mSubscriptionSubject.attach(observable1); mSubscriptionSubject.attach(observable2); mSubscriptionSubject.notify("updated!!!"); }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南乐县| 全椒县| 光泽县| 河源市| 临漳县| 黄梅县| 远安县| 太白县| 佳木斯市| 松滋市| 灌南县| 政和县| 定襄县| 乌拉特前旗| 莱西市| 江安县| 武城县| 垣曲县| 东莞市| 佳木斯市| 海晏县| 丰城市| 江达县| 福安市| 汉沽区| 义乌市| 贵港市| 巫溪县| 永昌县| 赤水市| 周口市| 九江市| 枝江市| 正蓝旗| 泾阳县| 乌拉特前旗| 平南县| 桑植县| 鹿邑县| 贵溪市| 柳林县|