在軟件開發中一般認為有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
六.【工廠模式】
使用場景:工廠方法創建類的實例,多於proxy模式配合,創建可替換代理類。
優點:易於替換,面向抽象編程,application隻和抽象工廠的共性抽象類發生調用關系。
原則:依賴倒置原則。
實例:項目部署環境中依賴多個不同類型的數據庫時,需要使用工廠配合proxy完成易用性替換。
總結,在實際的開發中,上述的模式用的最常見,如果以後用到其他的,我會繼續和大傢分享。