1. 程式人生 > >自娛自樂觀察者模式

自娛自樂觀察者模式

觀察者模式定義了物件間的一對多依賴關係,讓一個或多個觀察者物件觀察一個主題物件,當主題物件的狀態發生變化時,系統能通知所有的依賴於此物件的觀察者物件,從而使得觀察者物件能夠各自自動更新!

在觀察者模式中,被觀察的物件常常也被稱為【目標】或【主題】(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 定義   觀察者模式,有時又稱為發布-訂閱模式。定義了一種一對多個依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己