java設計模式之觀察者模式

2021-09-02 06:15:17 字數 1075 閱讀 4908

一、基本概念:

觀察者模式屬於行為型模式,其意圖是定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

這乙個模式的關鍵物件是目標(subject)和觀察者(observer)。乙個目標可以有任意數目的依賴它的觀察者,一旦目標的狀態發生改變,所有的觀察者都得到通知,作為對這個通知的響應,每個觀察者都將查詢目標以使其狀態與目標的狀態同步。

適用場景:

觀察者模式,用於存在一對多依賴關係的物件間,當被依賴者變化時,通知依賴者全部進行更新。因此,被依賴者應該有新增/刪除依賴者的方法,且可以將新增的依賴者放到乙個容器中;且有乙個方法去通知所有依賴者進行更新。一般observer模式的最知名的應用是在mvc結構,observer模式也可以應用在文件和圖表程式的製作

二、例項:

老師換號碼,學生需要知道老師的號碼必要時可以撥打。分析得出,老師就是乙個被觀察者(subject),學生就是需要知道號碼的觀察者(observer),當老師的**號碼發生改變時,學生得到通知,並更新相應的號碼。

思想:建立目標(subject)與觀察者(observer)介面:

//被觀察者

public inte***ce subject

//觀察者

public inte***ce observer  

建立乙個當目標狀態發生改變時,發布通知給觀察者物件的方法

public class teacher implements subject

public void add(observer o)

public void del(observer o)

public void notice()

public void show()

public void update() }

測試public class observertest

teacher.setphone("10086");

for(int i=0;i<10;i++)

teacher.setphone("1380013800");

for(int i=0;i<10;i++) }

}

Java設計模式之觀察者模式

觀察者模式是乙個使用率非常高的模式,觀察者 observer 模式又名發布 訂閱 publish subscribe 模式,這個模式有乙個非常重要的作用就是解耦,將被觀察者和觀察者之間的依賴降到最小.像我們進場使用的adapter就使用了觀察者模式,當資料集發生變化的時候,通知adapter更新.定...

Java設計模式之觀察者模式

觀察者模式定義了一些列物件之間的一對多關係。當乙個物件改變狀態,其他依賴者都會收到通知。觀察者模式提供了一種物件設計,讓主題和觀察者之間松耦合。uml圖 觀察者介面 觀察者介面 public inte ce observer 觀察者a 觀察者a public class aimplements ob...

JAVA設計模式之觀察者模式

觀察者模式定義了一種一對多的依賴關係 簡單的解釋就是多個觀察者物件,一同觀察某個主題物件,並隨著主題物件的更新,而各自進行相應的更新 舉個例子,動物園裡飼養員是乙個主題物件,而這個飼養員所餵養的動物,就是乙個個的觀察者物件 在這個例子中的飼養員比較奇葩,他對它所餵養的動物,統一喂同一種食物,雖然動物...