定義物件之間一對多的關係,當乙個物件狀態被更新時,所有依賴於它的物件都將被更新。觀察者模式有四種定義角色,分別為:抽象主題(subject)、具體主題(concretesubject)、抽象觀察者(observer)、具體觀察者(concreteobserver)。
這種模式可以理解為:抽象主題中定義具體主題需要包含的方法,具體主題繼承抽象主題,並對抽象主題中的抽象方法給出具體實現,包括對觀察者的註冊、觀察者的移除、通知觀察者方法的具體實現。抽象觀察者定義具體觀察者中需要包含的狀態更新抽象方法,具體觀察者繼承抽象觀察者並給出抽象方法的具體實現。具體觀察者例項化時由具體主題進行註冊。當具體主題的狀態發生變化時,具體主題中的通知觀察者方法會給已經註冊的具體觀察者發出廣播通知,對具體觀察者的狀態進行更新。
下面給出demo的實現**。
抽象觀察者:
public abstract class observer
具體觀察者1
public class binaryobserver extends observer
@override
public void update()
}
具體觀察者2
public class hexobserver extends observer
@override
public void update()
}
具體觀察者3
public class octalobserver extends observer
@override
public void update()
}
抽象主題
public abstract class subject
具體主題
public class concretesubject extends subject
public void setstate(int state)
@override
public void detach(observer observer)
@override
public void attach(observer observer)
@override
public void notifyobservers()
}}
測試demo
public class main
}
以上內容均為個人理解,如有錯誤之處,敬請批評指正!謝謝~ 簡單的觀察者模式
本文 使用的語言為c 請使用別的語言的同學自行轉換為自己習慣的語言 什麼是觀察者模式?簡單來說,就是一對多的通知,舉個例子 在保衛城堡類的遊戲中,如果城堡受到了攻擊,就會通知 兵營 出兵,城牆 公升級加固等等,這時的城堡就是被觀察者,而負責做出相應反應的就是觀察者。當被觀察者狀態發生改變的時候,通知...
觀察者模式簡單總結
觀察者模式就是兩個類的使用 public inte ce observer public class observable就像我們平時寫監聽一樣,不過這次是把listener加入集合中使用。public class aa public void notifyobservers public inte...
python觀察者模式 python 觀察者模式
python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...