關於前陣子學習ios MVC設計模式的小結
MVC模式是 Cocoa(Touch)的核心,其包含了一些基本的設計模式. 設計模式主要是運用面向物件特性程式設計的一些總結性的經驗. Cocoa MVC 模式包括 介面卡模式(委託Delegate就是介面卡模式).組合模式,命令模式,中介者模式,策略模式,觀察者模式.時間有限先只小結比較熟的三個模式,並講一下在Cocoa中的示例,你會發現很多Cocoa類庫遵照了很多之類的模式
1.組合模式是使用介面(協議)的優秀例子,它使物件和物件的組合能被一致性看待.類圖如下
Cocoa中UIView就是使用組合模式的例子,在一個手機應用上,手機螢幕上滿是UIView檢視或其派生類,它們是可以互相包含的,每一個檢視或其檢視的子類
2.中介者模式,上類圖
只看類圖是難懂的,說明一下同事類,所謂同事類是一群相互引用的亂成一團麻的類,比如Controller們互相引用來進行檢視切換控制的流程,如下
經過中介者模式處理,就變成下面這樣子了:
是不是很清晰? 中介者引用了所有的同事類,負責它們的互動.自己不具有其它功能,僅僅負責那團亂麻,這就是面向物件的萬物皆物件的封裝,
3觀察者模式,上類圖
觀察者模式是一種釋出-訂閱模式,看類圖就知道,是兩個抽象類或介面之間的相互引用.其中一個介面當釋出者,它的每個實現ConcreteSubject都代表一個主題,每個主題ConcreteSubject擁有一個觀察者佇列,所有觀察者ConcreteObserver都是實現觀察者介面的人,它們自己接收到主題通知後,自己有不同的實現方式.這不影響主題實現類向它們傳送通知.只要有主題通知(一般通知Notification
在Cocoa中,NSNotificationCenter就是一個主題佇列維護者,任何物件都可以在這裡用引數定製相關主題,然後NSNotificationCenter在有情況就生成一個通知NSNotification(通知自己識別了主題),然後postNotification就完事了.
關於KVO,鍵值觀察也是這個模式的示例,想了解的去看蘋果的API,這裡不贅述了.