国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 炉霍县| 城市| 缙云县| 光山县| 睢宁县| 广丰县| 兰考县| 姚安县| 抚顺市| 灵台县| 邵阳市| 安泽县| 密山市| 开封县| 常宁市| 长兴县| 南开区| 西藏| 八宿县| 永修县| 康马县| 江门市| 依兰县| 奇台县| 长宁区| 措美县| 启东市| 广宁县| 西城区| 三明市| 九龙县| 晋江市| 文水县| 牙克石市| 江城| 洛浦县| 遂昌县| 咸宁市| 河北区| 封丘县| 乌拉特后旗|