敏捷開發之觀察者模式

2021-09-20 02:04:37 字數 1354 閱讀 9071

事件響應是觀察者模式的核心點。

我們在某個基礎類中定義這麼乙個成員變數,該成員變數的屬性值為get和set,具備預設值,在set下賦值後,加上一行**用來觸發事件響應。當外部程式,為該屬性值賦予新值時,將會觸發事件響應,做出相應操作。俗稱觀察者模式。

mvp加觀察者模式是敏捷開發的乙個很好組合,順道在這裡援引一名工友的部落格:

mvp把activity中的ui邏輯抽象成view介面,把業務邏輯抽象成presenter介面,model類還是原來的model。 

mvp模式的作用 : 

1、分離了檢視邏輯和業務邏輯,降低了耦合 

2、activity只處理生命週期的任務,**變得更加簡潔 

3、檢視邏輯和業務邏輯分別抽象到了view和presenter的介面中去,提高**的可閱讀性 

4、presenter被抽象成介面,可以有多種具體的實現,所以方便進行單元測試

5、把業務邏輯抽到presenter中去,避免後台執行緒引用著activity導致activity的資源無法被系統**從而引起記憶體洩露和oom 

6、ui介面中定義了更新ui的方法,presenter介面中定義了業務邏輯方法,我們從這兩個介面檔案中就可以一目了然地看到我們有哪些邏輯操作,有哪些ui更新方法,功能一目了然。 

概述: 

有時被稱作發布/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。

解決的問題: 

將乙個系統分割成乙個一些類相互協作的類有乙個不好的***,那就是需要維護相關物件間的一致性。我們不希望為了維持一致性而使各類緊密耦合,這樣會給維護、擴充套件和重用都帶來不便。觀察者就是解決這類的耦合關係的。

模式中的角色: 

3.1抽象主題(subject):它把所有觀察者物件的引用儲存到乙個聚集裡,每個主題都可以有任何數量的觀察者。抽象主題提供乙個介面,可以增加和刪除觀察者物件。 

3.2具體主題(concretesubject):將有關狀態存入具體觀察者物件;在具體主題內部狀態改變時,給所有登記過的觀察者發出通知。 

3.3 抽象觀察者(observer):為所有的具體觀察者定義乙個介面,在得到主題通知時更新自己。 

3.4具體觀察者(concreteobserver):實現抽象觀察者角色所要求的更新介面,以便使本身的狀態與主題狀態協調。

模式解讀: 

4.1 觀察者模式的類圖 

墨匠

iOS開發之觀察者

觀察者事件 註冊必刪除 indexviewinformation sharedinstance addobserver self forkeypath selectedmoremodel options nskeyvalueobservingoptionnew nskeyvalueobserving...

c 之觀察者模式

以下均摘自 大話設計模式 這本書,供大家一起學習和交流,感謝作者。觀察者模式又叫做發布 訂閱模式 其定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。觀察者模式結構圖 subject類,可翻譯為主題或者抽象統...

HEAD FIRST 之觀察者模式

定義了物件之間的一對多依賴,當乙個物件改變狀態時,它的所有依賴者都將會收到通知並自動更新.觀察者模式形容圖 有乙個氣象觀察站,我們希望建立乙個應用,有三種佈告板 用於顯示不同的氣象資料 當氣象站獲取到最新的測量資料時,我們希望三種佈告板能實時更新.類圖設計 其中weatherdata用於獲取氣象站最...