iOS開發設計模式詳解
在軟體開發中一般認為有23種設計模式(design pattern),這是軟體開發中的較高的境界了。在iOS開發中最常用的有哪些設計模式呢?我們今天來分析一下:
一.【代理模式】
使用情境:當一個類的某些功能需要由別的類來實現,但是又不確定具體會是哪個類實現。其實就像是Java中的介面,類可以實現或者不實現協議(介面)中的方法。
優點:低耦合。
使用原則:開閉原則。
執行個體:TableView的UITableViewDataSource、UITableViewDelegate,通過和protocol的配合,完成代理。
二.【觀察者模式】
使用情境:一般是對model層進行觀察,Controller和View進行通知的方式,只負責發送訊息,不關係誰去接收。一個對象狀態改變,通知正在對他進行觀察的對象,這些對象根據各自的要求做出響應。
優點:低耦合。
使用原則:介面隔離原則,開閉原則。
執行個體:KVO索引值觀察者。通知機制。
三.【MVC模式】
使用情境:整個iOS App系統架構就應該按照MVC模式。
優點:層次清晰、易於維護。
執行個體:model進行資料的儲存,View進行視圖的顯示和響應,controller是model和view之間的橋樑,進行邏輯控制。
四.【單例模式】
使用情境:確保程式運行時只有一個執行個體,用於進行資源共用控制。
優點:邏輯簡單。
原則:單一職責。
執行個體:
(1)UIAccelerometer類和sharedAccelerometer方法,一般如果方法名中有shared這樣的詞,就可以認為這是一個可以整個應用程式共用的執行個體變數,一般是使用了單例。
(2)UIApplication類和sharedApplication方法,我們一般使用該方法來建立全域變數。
(3)NSBundle類和mainBundle方法。
(4)NSFileManager類和defaultManager方法。
(5)NSNotificationCenter類和defaultManager方法。其中NSNotificationCenter也實現了觀察者模式。
(6)NSUserDefaults類和defaultUser方法。
五.【策略模式】
使用情境:定義演算法族,進行封裝,使他們之間可以相互替換。
優點:使演算法的變化獨立於使用演算法的使用者。
原則:針對介面編程,而不是針對實現編程。
執行個體:排序演算法,NSArray的sortedArrayUsingSelector
六.【原廠模式】
使用情境:Factory 方法建立類的執行個體,多於proxy模式配合,建立可替換代理類。
優點:易於替換,面向抽象編程,application只和抽象工廠的共性抽象類別發生調用關係。
原則:依賴倒置原則。
執行個體:項目部署環境中依賴多個不同類型的資料庫時,需要使用工廠配合proxy完成易用性替換。
總結,在實際的開發中,上述的模式用的最常見,如果以後用到其他的,我會繼續和大家分享。