Java設計模式 觀察者模式 花唄生活號

2021-08-07 12:19:30 字數 1815 閱讀 1932

說到觀察者模式,我想大家並不陌生,今天給大家介紹下觀察者模式。

首先來看下觀察者模式的的定義:定義了物件之間一對多的依賴,這樣一來,當乙個物件改變時,它的所有的依賴者都會收到通知並自動更新。就像支付寶裡的花唄生活號一樣,當你訂閱了花唄生活號,一旦花唄有什麼新的功能堆出來,就會把訊息推送給你。當然有的訊息也可能是根據使用者的使用行為進行推送,這裡不再考慮。好了,開始我們的觀察者模式吧。

先定義乙個生活號的介面:

package observerpattern;

public inte***ce subject

接著定義乙個觀察者的介面:

package observerpattern;

public inte***ce observer

現在我們建立乙個花唄生活號:

/**

* 花唄生活號

*/public class alisubject implements subject

@override

public void

unregisterobserver(observer observer) }}

@override

public void

notifyobservers()

}public void

sendmessage(string msg)

}

有了生活號,就有了使用者。使用者有權選擇訂閱生活號和取消訂閱生活號。

花唄使用者1:

package observerpattern;

public class observeruser implements observer

/*** 開啟花唄服務視窗

*/public void

register()

/*** 關閉花唄服務視窗

*/public void

remove()

@override

public void

update(string msg)

}

花唄使用者2:

package observerpattern;

public class observeruser2 implements observer

/*** 開啟花唄服務視窗

*/public void

register()

/*** 關閉花唄服務視窗

*/public void

remove()

@override

public void

update(string msg)

}

現在花唄生活有訊息更新了:

public class testsubject 

}

控制台輸出:

您的花唄額度更新了...

您的花唄額度更新了...

現在使用者1,要取消對花唄生活號的關注:

public class testfactory 

}

控制台輸出:

您的花唄額度更新了...

您的花唄額度更新了...

使用者1取消關注花唄生活號

您的花唄額度更新了...

我們可以看到使用者1,取消了關注,當花唄生活號再次推送訊息的時候,使用者1已經不再接收訊息。其實觀察者模式,還是很常見的,像我們安卓中的廣播,就是乙個很好的列子。有興趣的同學可以抽出點時間來,好好去看下廣播的實現方式。好了,到這裡恭喜你已經學會了觀察者模式。感謝路過。

java設計模式 觀察者模式

本例以貓和老鼠來講解觀察者,首先定義觀察者為 老鼠和主人,被觀察者為貓,如下 public inte ce observer public class event public string getname public class mouse implements observer public ...

Java設計模式 觀察者模式

在物件之間定義一對多的依賴關係,這樣一來,當乙個物件改變狀態,依賴它的物件都會收到通知,並自動更新。比如有乙個天氣的資料來源,和需要獲取天氣資料的觀察者。天氣資料不定時更新。而觀察者也是隨時訂閱和取消訂閱天氣資料來源。在訂閱時,希望每次天氣資料更新時觀察者都可以獲取資訊。天氣資料來源作為被觀察的主題...

Java設計模式 觀察者模式

觀察者模式是乙個使用率非常高的的模式,它是一套訂閱 發布系統,這個模式最重要的作用就是將訂閱者和被訂閱者解耦。定義物件間一種對多種的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知。subject 抽象主題類,也就是被觀察者 observable 把所有觀察者物件儲存在乙個集合裡...