設計模式 三

2021-10-10 15:33:16 字數 634 閱讀 9665

行為型模式

重點關注物件之間的通訊

1 觀察者模式

1.1 定義

觀察者(observer)模式定義:只多個物件間存在一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴他的物件都得到通知並被自動更新,這種模式有時又稱作發布-訂閱模式、模型-檢視模式,它是行為型模式。

1.2 結構角色

實現觀察者模式時要注意具體目標物件和具體觀察者物件之間不能直接呼叫,否則將使兩者之間緊密耦合起來,這違反了物件導向的設計原則。

觀察者模式的主要角色如下。

抽象主題(subject)角色:也叫抽象目標類,它提供了乙個用於儲存觀察者物件的集合變數和增加、刪除觀察者物件的方法,以及通知所有觀察者的抽象方法。

具體主題(concrete subject)角色:也叫具體目標類,它實現抽象目標中的通知方法,當具體主題的內部狀態發生改變時,通知所有註冊過的觀察者物件。

抽象觀察者(observer)角色:它是乙個抽象類或介面,它包含了乙個更新自己的抽象方法,當

接到具體主題的更改通知時被呼叫。

具體觀察者(concrete observer)角色:實現抽象觀察者中定義的抽象方法,以便在得到目標的更改通知時更新自身的狀態。如圖所示:

設計模式(三)

中介者模式 中介物件來封裝行為,是各個物件的協調中心。使得各物件不需要相互引用就可以實現之間的互動。觀察者模式 比如oc中常用的notification delegate模式等.命令模式 target action nsinvocation 把執行封裝成命令物件。建立nsinvocation物件時,...

設計模式 三 裝飾模式

動態地給乙個物件新增一些額外的職責 不重要的功能,只是偶然一次要執行 就增加功能來說,裝飾模式比生成子類更為靈活。建造過程不穩定,按正確的順序串聯起來進行控制。good 當你向舊的類中新增新 時,一般是為了新增核心職責或主要行為。而當需要加入的僅僅是一些特定情況下才會執行的特定的功能時 簡單點就是不...

設計模式 裝飾模式(三)

裝飾模式 軟體領域中的設計模式的重要性不言而喻。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型。雖然知道這些特性的定義但是並沒有做到真正的理解,這樣特性有什麼作用?用於什麼場合中等等問題,帶著疑問開始學習設計模式,主要參考 大話設計模式 和 設計模式 可復用物件導向軟體的基礎 兩本...