JAVA 觀察者模式

2021-07-02 04:23:16 字數 1114 閱讀 3865

實現觀察者模式涉及到乙個類和乙個介面--observable類和observer介面;

被觀察的類需要繼承observable類,在該類中的常用方法有:

public voidaddobserver(observer o);增加乙個觀察者觀察自己;

public voiddeleteobserver(observer o);刪除乙個已有的觀察者;

public voidnotifyobservers(object arg);喚醒所有觀察者,通知他們已經發生了更新,這時候會呼叫觀察者的update()方法,並傳入引數 arg;

protected voidsetchanged();設定狀態改變的具體內容;

觀察者類需要實現observer介面,該介面中有乙個方法:

voidupdate(observable o,object arg);當被觀察物件呼叫notifyobservers()方法時,自動呼叫該方法通知觀察者;

例子:乙個市場,多個觀察者;

class market extends observable

public void change(string name,int nvalue)

public string tostring()

}class investor implements observer

//更新觀察者物件,接收被觀察物件,可處理其一切狀態

public void update(observable o,object arg)}}

其中,為了使得被觀察的改變被觀察者察覺,setchanged()與notifyobservers()這兩個函式缺一不可;

定義完後,可以直接使用:

public static void main(string args)       

結果如圖:

java觀察者模式

簡單地說,觀察者模式定義了乙個一對多的依賴關係,讓乙個或多個觀察者物件監察乙個主題物件。這樣乙個主題物件在狀態上的變化能夠通知所有的依賴於此物件的那些觀察者物件,使這些觀察者物件能夠自動更新。不多說了,直接給出實現 例1 對某個事件只有乙個訂閱者的例子 author yongxing.shao pu...

觀察者模式java

根據headfirst做出實現如下 主題,觀察者,顯示三個介面。public inte ce observer public inte ce subject public inte ce displayelement 氣象資料實現主題介面 public class weather implement...

java 觀察者模式

觀察者模式顧名思義就是觀察乙個物件的變化並且做相應的動作。舉個例子 乙個學生可以有學習,睡覺的動作,但是如果在他做這些事情之前他媽媽提醒他下面該作甚麼。一旦他學習,就提醒他要先預習課程,一旦他睡覺就提醒他要先洗腳。我們來先定義乙個學生實體 public class student public st...