iphone 程序的設計模式

第一次接觸ios,第一次接觸oc ,完全跟着感覺走。。。。。

設計模式,看的頭暈,寫下來,應該不暈了吧大笑。iphone 常用的設計模式應該分爲九種(書上抄來的。。。)

1.MVC模式      2.共享模式        3.目標和動作模式       4.通告模式       5.歸檔模式    6.子視圖模式     7.委託模式    8.執行命令模式       9.代理模式

詳解設計模式:

NO.1  MVC模式:

知道Java的都熟悉mvc模式,我感覺這裏的mvc模式和Java的相似吧,學習起來不是太難理解。MVC把應用分爲三個層:Modle  Layer(模型層)、View layer(視圖層)、Controller Layer(控制層)。

View向Model發起狀態查詢操作將結果呈現給用戶。當用戶有所動作的時候,View 會通知控制器 Controller,Controller會發起狀態改變的操作給Model,Model隨後發出數據已改變的消息,通知View更新。MVC示意圖:


模型對象封裝了應用程序的數據、邏輯定義以及數據計算和處理。一個模型對象可以與其他模型對象有一對一或者一對多的關係。一個模型對象需要具備屬性,和屬性的存取方法。

視圖對象的主要工作是顯示模型對象裏的數據,並編輯這些數據。Iphone os 的Appkit和UIkit框架提供了視圖類的集合,並在interface builder的庫裏面提供了多個視圖對象。

控制對象是視圖對象和模型對象的中介,可以讓視圖對象瞭解模型對象的改變,並同時更改模型對象的數據。控制對象還可以實現應用程序安裝和任務協調,還可以管理對象的生命週期。


此圖是控制對象的預覽圖。程序委託對象作爲系統層面和程序內在控制器的橋樑。

在MVC模式中,一個控制器物件翻譯了使用者對View物件的動作和意圖。

控制器對象分爲三種:視圖控制器,協調控制器和媒體控制器(針對Mac OS X)

導航條和分頁條以及所有相關的呈現行爲,都由視圖控制物件管理和實現。視圖控制器是UIViewController的子類的實例。基本上是針對許多框架對象的委託和數據源。

協調控制器監督並管理整個應用程序的職能。在 iphone OS中視圖控制器還扮演了協調控制器的角色,主要功能如下:負責委託訊息和觀擦通告。負責建立對象之間的連接,並且執行其他設定的工作。管理對象的生命週期。

No. 2 對象共享模式

對象共享就是一個單態類,是一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。這個類稱爲單態類,它的特點有:

(1)一個類只有一個實例(2)它必須自行創建這個實例(3)它必須向整個系統提供這個實例(3)不能外部實例化,也不能被繼承。

無論應用程序請求多少次,單態模式類始終只返回一個實例。單態類通過工廠方法返回一個唯一的實例。實例一旦第一次創建以後就不會再創建。同時一個單態類實例不能被保持,複製和釋放。Cocoa提供了很多的單態類,例如NSFileManager、NSWorkSpace、NSBundle。在UIkit類裏面,UIapplication和UIAceelerometer也是單態類。

如果想獲取一個NSFileManager的實例可以用一下代碼:

NSFileManager *fm=[NSFileManager defaultManager];

defaultManager方式是NSFileManager類的類方法,因爲單態類只有一個實例,objective-c中常常使用類方法機制來實現單態方法。

NO.3 目標和動作模式

目標-動作模式允許開發者通過定義目標對象和調用的方法來賦予一個用戶動作一定的含義。目標和動作機制非常適合MVC設計模式,當用戶操作視圖上的控件一一對應,每個控件都是變量的目標。通常使用interface Builder來設置目標和動作。

No.4通告模式

通告模式的原型是設計模式中的觀察者模式,在設計模式中觀察者模式完美的將觀察者和被觀察者的對象分離開。 面向對象設計的一個原則是系統中每個類將重點放在某一個功能上,而不是其他方面。一個對象只做一件事,並且將它做好。觀察者模式在模塊之間劃定了清晰的界限,提高了應用程序的可維護性和重用性。

實現觀察者模式的時候要注意,觀察者和被觀察者之間的互動關係不能體現在類之間的直接調用,否則就將使觀察者和被觀察者之間緊密的耦合起來。實現觀察者模式有很多種,比較直觀的一種是使用“註冊-通知-撤銷註冊”的形式。

被觀察者註冊 、被觀察者發生改變,通知觀察者、撤銷觀察者。

通告是建立在觀察者模式的基礎上的,其中通告中心相當於觀察者,負責觀察各種註冊對象,當註冊對象發生改變或者接受到某個消息時,它會發消息給通告中心,然後通告中心又會將此消息轉發給其他對此消息感興趣的註冊對象。

No.5  歸檔模式

歸檔模式是指一種數據轉換過程,就是將一組相互關聯的對象轉換爲可存儲及在應用程序間進行傳遞的形式。歸檔的最終結果是一份字節流文件。解檔是相反的過程,是根據檔案重新構建出完全相同的對象網絡。歸檔爲對象持久化提供了通用方案。應用程序經常使用歸檔類來實現諸如複製和粘貼這種剪貼板操作。

Foundation框架提供了兩套類用於歸解碼對象網絡。每套類都包含用於啓動解檔過程的方法以及用於編解碼對象實例數據的方法。這些類的對象有時也會被稱爲歸檔器和解檔器。

鍵歸檔器和鍵解檔器,此類對象使用字符串作爲鍵來標識待解碼數據。開發者尤其是新應用程序的開發者,偏愛使用此類對象執行歸、解檔操作

順序歸檔器和順序解檔器,“”舊風格“歸檔以某種順序編碼對象狀態,解檔也需按照相同的順序。

應用程序可以調用NSKeyedArchiver類的archiveRootObject:toFile:方法來創建檔案。解檔按相反的方向進行。應用程序通過調用NSKeyedUnarchiver類的unarchiveObjectWithFile:方法來解檔。這兩個方法是處理數據對象不是處理文件。

No.6子視圖模式

這種模式沒有什麼可以說的,就是每一個視圖可以有一個或者多個子視圖。每一個子視圖可以有多個子視圖。視圖的概念可以使UI設計更靈活。

NO.7委託模式

委託模式中,有兩個對象參與處理同一個請求,接受請求的對象將請求委託給另一個對象來處理。在Cocoa Touch使用委託的技術,就是當一個對象收到消息時,它會執行消息的任務託付給其他的對象來做,前者爲委託對象,後者爲受委託者。

No.8 執行命令模式

執行命令模式的目的是將一個請求封裝爲一個對象,從而使開發者可以用不同的請求對客戶進行參數化,對請求有序排列或將請求記錄下來,以及支持可撤銷的操作。命令模式的主要思想就是把方法提升到類型的層次,這樣對方法的執行有更多的控制力,這個控制力表現在對時間的控制力、對撤銷的控制力和對組合行爲的控制力。

No.9代理模式

代理模式一般主要用來解決爲其他對象提供一種代理以控制對這個對象的訪問。

代理對象一般有三種:

抽象對象。聲明真實對象和代理對象的共同接口。

代理對象角色內部含有對真實對象的應用,從而可以操作真實對象,同時代理對象提供與真實對象相同的接口以便在任何時刻都能代替真實對象。代理對象可以在執行真實對象操作時,附加其他操作,相當於對真實對象進行封裝。

真實對象,代理角色所代表的真實對象,是我們最終要應用的對象。

代理模式在Cocoa touch中的主要目的是進行訪問控制,這種模式可以用於一個可能是遠程的、創建起來開銷大的、或者需要保證安全的對象 創建代理對象,並在代理對象中爲其提供訪問控制的場合,它在結構上和裝飾模式類型,但服務於不同的目的:裝飾對象的目的是爲另一個對象添加行爲,而代理對象則是進行訪問控制。

Cocoa Touch基礎框架爲代理模式的實現提供了類NSProxy.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章