觀察者模式定義了物件之間的一對多依賴,這樣一來,當乙個物件改變狀態時,它的所有依賴者都會收到通知並自動更新。
當兩個物件之間松耦合,他們依然可以互動,但是不太清楚彼此的細節。觀察者模式提供了一種物件設計讓主題和觀察者之間松耦合。
我們來看看一種push方式的 觀察者模式。
首先是觀察者 主題 等的介面。
//主題 public inte***ce subject //觀察者 public inte***ce observer //other 操作 public inte***ce displayelement
實現這些介面。
//實現主題 public class weatherdata implements subject public void notifyobservers() } public void registerobserver(observer o) public void removeobserver(observer o) } public void measurementschange() public void setmeasurements(float temperature, float humidity, float pressure) } //實現觀察者 public class currentconditionsdisplay implements observer, displayelement public void update(float temp, float humidity, float pressure) public void display() }
實現完了這些介面,測試觀察者模式
public class weatherstation }
java設計模式 觀察者模式
本例以貓和老鼠來講解觀察者,首先定義觀察者為 老鼠和主人,被觀察者為貓,如下 public inte ce observer public class event public string getname public class mouse implements observer public ...
Java設計模式 觀察者模式
在物件之間定義一對多的依賴關係,這樣一來,當乙個物件改變狀態,依賴它的物件都會收到通知,並自動更新。比如有乙個天氣的資料來源,和需要獲取天氣資料的觀察者。天氣資料不定時更新。而觀察者也是隨時訂閱和取消訂閱天氣資料來源。在訂閱時,希望每次天氣資料更新時觀察者都可以獲取資訊。天氣資料來源作為被觀察的主題...
Java設計模式 觀察者模式
觀察者模式是乙個使用率非常高的的模式,它是一套訂閱 發布系統,這個模式最重要的作用就是將訂閱者和被訂閱者解耦。定義物件間一種對多種的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知。subject 抽象主題類,也就是被觀察者 observable 把所有觀察者物件儲存在乙個集合裡...