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

首頁 > 學院 > 開發設計 > 正文

設計模式——觀察者模式

2019-11-06 09:38:13
字體:
來源:轉載
供稿:網友

下面我們就來介紹一下行為型模式之一的觀察者模式。觀察者模式主要用于1對N的通知,當一個對象發生(被觀察者)改變時,它需要發出一系列的通知,告知其它的對象(觀察者)做出相應的變化。我們所熟悉的廣播就是最好的觀察者模式。 觀察者模式的主要組成: 抽象被觀察者角色:把所有對觀察者對象的引用保存在一個集合中,每個抽象主題角色都可以有任意數量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者角色。一般用一個抽象類和接口來實現。 抽象觀察者角色:為所有具體的觀察者定義一個接口,在得到主題的通知時更新自己。 具體被觀察者察者角色:在具體主題內部狀態改變時,給所有登記過的觀察者發出通知。具體主題角色通常用一個子類實現。 具體觀察者角色:該角色實現抽象觀察者角色所要求的更新接口,以便使本身的狀態與主題的狀態相協調。通常用一個子類實現。如果需要,具體觀察者角色可以保存一個指向具體主題角色的引用。 觀察者模式適用于: 1.當一個抽象模型有兩個方面,其中一個方面依賴于另一方面。 2.當對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。 3.當一個對象必須通知其它對象,而它又不能象是誰。 下面我們就以廣播發送和接收為例: 抽象被觀察者角色SendBroadcast

/** * 抽象被觀察者角色 * 發送者也就是所謂的被觀察者 */public interface SendBroadcast { //注冊廣播,在這里當做添加廣播 void registerReceiver(BroadcastReceiver bReceiver); //取消廣播,在這里當做刪除廣播 void unregisterReceiver(BroadcastReceiver bReceiver); //通知廣播接收者 void notifyReceiver(String str);}

抽象的觀察者角色BroadcastReceiver

/** * 抽象的觀察者角色 * 接收者也就是所謂的觀察者 */public interface BroadcastReceiver { String onReceive(String str);}

具體的接收者(觀察者角色)ConcreteReceiver

/** * 具體的接收者(觀察者角色) */public class ConcreteReceiver implements BroadcastReceiver{ @Override public String onReceive(String str) { return str; }}

具體的發送者(被觀察者角色)ConcreteSend

/** * 具體的發送者(被觀察者角色) */public class ConcreteSend implements SendBroadcast{ // 存放廣播接收者 PRivate List<BroadcastReceiver> mReceiverList = new ArrayList<BroadcastReceiver>(); @Override public void registerReceiver(BroadcastReceiver bReceiver) { mReceiverList.add(bReceiver); } @Override public void unregisterReceiver(BroadcastReceiver bReceiver) { mReceiverList.remove(bReceiver); } @Override public void notifyReceiver(String str) { for (BroadcastReceiver bReceiver : mReceiverList) { System.out.println(bReceiver+"已經收到消息---->"+bReceiver.onReceive(str)); } }}

運行效果圖 這里寫圖片描述 觀察者模式在我們的應用中也很常見,onclick點擊事件以及onTouch等等都是所謂的觀察者模式。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 时尚| 拉孜县| 罗源县| 鄂州市| 德惠市| 巴林左旗| 盖州市| 石河子市| 秀山| 兴化市| 阳新县| 兖州市| 彭水| 土默特左旗| 龙山县| 孝昌县| 阜城县| 隆昌县| 城步| 邹城市| 盐亭县| 和林格尔县| 台北县| 阿尔山市| 兖州市| 余干县| 兴仁县| 灵台县| 台北县| 会东县| 治县。| 五莲县| 汉川市| 启东市| 肃北| 吉安市| 米林县| 镇宁| 绥中县| 同江市| 四平市|