自娛自樂觀察者模式
觀察者模式定義了物件間的一對多依賴關係,讓一個或多個觀察者物件觀察一個主題物件,當主題物件的狀態發生變化時,系統能通知所有的依賴於此物件的觀察者物件,從而使得觀察者物件能夠各自自動更新!
在觀察者模式中,被觀察的物件常常也被稱為【目標】或【主題】(Subject),依賴的物件被稱作觀察者(Observer)。
公司的制度讓我常常想起此模式。公司只有一個美工,很多專案都需要美工,美工想請假很頭痛,因部門經理要美工分別向公司十幾個專案經理逐個打電話通知。
還有很多時候可以使用此模式:
比如系統的事件處理方式也是使用此模式,是設計模式的皇后,哈哈。
如果是異構系統現在用得最多的時MQ了,股票。
建立觀察者模式,現在對JAVA來說那是一件非常簡單的事情了!
第一步:建立Subject (繼承Observable)
package cn.yangcai.Subject;
import java.util.Observable;
public class ArtdesignerSubject extends Observable {
public void message(Object arg0)
{
if(true)
{//判斷是否觸發通知
super.setChanged();
}
notifyObservers(arg0);
}
}
第二步:建立Observer(繼承Observer)
package cn.yangcai.Observer; import java.util.Observable; import java.util.Observer; public class YangcaiObserver implements Observer { public void update(Observable arg0, Object arg1) { if(arg1 instanceof String) { System.out.println("美工"+arg0+"告訴專案經理楊彩:"+arg1); } } }
第三步:呼叫
package cn.yangcai; import cn.yangcai.Observer.YangruiObserver; import cn.yangcai.Observer.YangcaiObserver; import cn.yangcai.Subject.ArtdesignerSubject; public class test { public static void main(String[] args) { //1.建立subject ArtdesignerSubject subject=new ArtdesignerSubject(); //2.建立observer,並新增 YangcaiObserver yangcaiObserver=new YangcaiObserver(); YangruiObserver yangruiObserver=new YangruiObserver(); subject.addObserver(yangcaiObserver);//新增到列表 subject.addObserver(yangruiObserver);//新增到列表 //3.發通知 subject.message("我要休假了!"); subject.message("我休假回來了!"); } }
輸出為:
美工[email protected]告訴專案經理楊銳:我要休假了!
美工[email protected]告訴專案經理楊彩:我要休假了!
美工[email protected]告訴專案經理楊銳:我休假回來了!
美工[email protected]告訴專案經理楊彩:我休假回來了!
相關推薦
自娛自樂觀察者模式
觀察者模式定義了物件間的一對多依賴關係,讓一個或多個觀察者物件觀察一個主題物件,當主題物件的狀態發生變化時,系統能通知所有的依賴於此物件的觀察者物件,從而使得觀察者物件能夠各自自動更新!在觀察者模式中,被觀察的物件常常也被稱為【目標】或【主題】(Subject),依賴的物件被
大話設計模式之觀察者模式
arm eve his watermark observer cts 多個 放下 們的 從前,有個放羊娃。每天都去山上放羊,一天,他認為十分無聊。就想了個捉弄大家尋開心的主意。他向著山下正在種田的農夫們大聲喊:“狼來了!狼來了!救命啊!”農夫們聽到喊聲
觀察者模式
list object date() println 對象 實現 data null mes 定義: 對象之間存在一對多的關系,一的一方(被依賴對象,一般為Subject)變化,通知多的一方(依賴對象,一般為ObServer)。 UML: 代碼實現例子: public
php觀察者模式
sub 定義 發送消息 bject pan list 註冊 消息 notify <?php //定義接口,觀察者統一的方法,便於subject調用通知 interface Observerable { public function update(); }
觀察者模式C#實現實例(一)
upd 添加 add mov user remove 定義 更新 鬧鐘 1.用例情景 1)定義一個鬧鐘(目標類),裏面我們感興趣的是時間值times,當times大於9.15時,通知觀察者。 2)定義兩個觀察者,userA,userB,當收到times值時,作出判斷
java觀察者模式
sta ray equals system clas tde team oid 東方 觀察者設定一個觀察目標,根據觀察目標的變化,觀察者采取相應的應對行為---觀察者模式 1 //玩家類 2 public class Player { 3 4
設計模式——觀察者模式(C++實現)
ace mes des ret rtu cto pattern virt date 1 #include <iostream> 2 #include <vector> 3 #include <algorithm>
2015-03-12---外觀模式,建造者模式(附代碼),觀察者模式(附代碼),boost庫應用
思想 err map 函數 成功 each clu all 說我 今天白天主要看了boost庫的應用,主要是經常使用的一些庫,array,bind,function,regex,thread,unordered,ref,smartpointers庫,晚上看了看設計模式。
PHP面向對象之觀察者模式
模擬 信息 return date this != false 管理者 and 觀察者模式按我的的理解,主要分為觀察者類和被被觀察者類二個部分。被觀察者類會繼承一個接口(如:Observable)實現對觀察者的添加、刪除和通知(即通知觀察者發生了特定事件),它聚合了
js31---觀察者模式
htm tle char 如果 -- type org asc proto <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> &
C#設計模式--觀察者模式(發布-訂閱模式)
工廠方法 設計 解決 line strac itl names spa ret 0.C#設計模式--簡單工廠模式 1.C#設計模式--工廠方法模式 2.C#設計模式--抽象工廠模式 3.C#設計模式--單例模式 4.C#設計模式--建造者模式 5.C#設計模式--
設計模式之觀察者模式
觀察者模式 observer 監聽器的底層實現 observable 群發消息 轉發機制 1、觀察者模式的簡單介紹: a、核心: - 觀察者模式主要用於 1 : N 的通知中。當一個對象(目標對象 Subject 或者 Objservable )的狀態變化時,他需要及時告知
設計思想與模式之五觀察者模式
per -- 什麽 over out junit 測試類 rem second 一 概述 1.什麽是觀察者模式? 將一個對象視作被觀察者,當它發出某種行為或者發生某種變化時,通知所有依賴它的對象(觀察者),這種設計模式叫做觀察者設計模式。 2.觀察者設
設計模式筆記8: 觀察者模式
image 子類 http view 完全 log 註冊 功能 技術分享 1.1 定義 定義了一種一對多的依賴關系,讓多個觀察者同時監聽一個對象,但這個對象發生變化時,會通知所有觀察者對象,使他們能夠更新自己。 1.2 類圖 1.3 代碼 Vi
PHP模式設計之單例模式、工廠模式、註冊樹模式、適配器模式、觀察者模式
操作符 unset 關系 玩具 ati ase color 只有一個 bsp php模式設計之單例模式 什麽是單例模式? 單例模式是指在整個應用中只有一個實例對象的設計模式 為什麽要用單例模式? php經常要鏈接數據庫,如果在一個項目中頻繁建立連接數據庫,會
設計模式(一)觀察者模式
針對 ray 需求 als bool 模式 null rri 主動 觀察者模式 定義了對象之間的一對多的依賴,這樣一來,當一個對象狀態改變時,他的 多有依賴都會受到通知並自動更新。 本例為一個溫度基站,和三個終端。溫度基站為廣播類WeatherData,三個終端監聽者類分別
觀察者模式實際應用:監聽線程,意外退出線程後自動重啟
lee text 實時 之間 最終 ren tap instance and 摘要: 觀察者模式,定義對象之間的一種一對多的依賴關系,當對象的狀態發生改變時,所有依賴於它的對象都得到通知並且被自動更新。觀察者模式在JDK中有現成的實現,java.util.Obsera
敏捷開發之觀察者模式
http observer targe mark ref text 一行代碼 模式 文件 事件響應是觀察者模式的核心點。 我們在某個基礎類中定義這麽一個成員變量,該成員變量的屬性值為Get和Set,具備默認值,在Set下賦值後,加上一行代碼用來觸發事件響應。當外部程序,為該
Java設計模式補充:回調模式、事件監聽器模式、觀察者模式(轉)
應該 hand 關閉 lan china 關註 update 使用 event 一、回調函數 為什麽首先會講回調函數呢?因為這個是理解監聽器、觀察者模式的關鍵。 什麽是回調函數 所謂的回調,用於回調的函數。 回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的
設計模式—觀察者模式
5.1 servers 監聽 val notify src [] ati 場景 1 定義 觀察者模式,有時又稱為發布-訂閱模式。定義了一種一對多個依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己