iOS基礎 設計模式 MVC

2022-09-02 14:24:12 字數 1750 閱讀 1284

mvc

1 - 什麼是 mvc

① m(model)模型:通常是一些模型,作用是處理應用程式資料邏輯的部分

② v(view)檢視:作用是在應用程式中處理資料顯示的部分(檢視的建立通常是依據模型資料)

③ c(controller)控制器:作用在是應用程式中處理使用者互動的部分,通常負責從檢視讀取資料,控制使用者輸入,並向模型傳送資料,目的是解除資料和檢視之間的耦合

2 - mvc 的層次結構:使用 mvc 的目的就是實現 m 和 v **的分離,這個模式認為,程式不論簡單或複雜,從結構上看,都可以分成三層

① 最上面的一層,是直接面向終端使用者的檢視層,它是提供給使用者的操作介面,是程式的外殼

② 最底下的一層,是核心的資料層,也就是程式需要操作的資料或資訊

③ 中間的一層,就是控制層。它負責根據使用者從檢視層輸入的指令,選取資料層中的資料,然後對其進行相應的操作,產生最終結果

mvc 之間的通訊

1 - controller -> view:

c 直接控制 v,在 c 裡建立 outlet 通訊屬性,outlet 直接對應到 v 中的控制項,直接操作 v 層

2 - view -> controller:

① 通過 target action 這個結構來通訊:c 自己畫個 target ,然後把 action 交給 v。當 v 按鈕被按下,把 action 傳送到 target,這時候 c 就收到了資訊

② 通過設定**:如  v 要告訴 c 發生什麼事情,比如檢視將要發生什麼事情、詢問是否允許等等,就用到了 will、did、should...

這就需要 c 把自己設定成委託以回應 v 層的 will、did、should...

③ 通過設定 datasource:如  uitableview 的 datasource

3 - controller -> model:

c 向 m 提出需求,直接使用 m 中的資料

4 - model -> controller:

m 不能主動勾搭 c,那 m 資料有了變化,怎麼讓 c 知道呢 ?

使用 notification  |  kvo 機制

5 - model - view:

建議之間永遠不要進行通訊(預設兩者禁止通訊:m 和 v 並沒有實質性的關係,一旦關聯後,當 m 發生改變,v 就不得不重寫)

mvc 優缺點

1 - 缺點

① 增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循 mvc,可能使模型、檢視與控制器分離,會增加結構的複雜性,並可能產生過多的更新操作,降低執行效率

② 檢視與控制器間的過於緊密的連線:檢視與控制器是相互分離,但確實聯絡緊密的部件,檢視沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了它們的獨立重用

③ 檢視對模型資料的低效率訪問。依據模型操作介面的不同,檢視可能需要多次呼叫才能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能

④ 目前,一般高階的介面工具或構造器不支援 mvc 架構,改造這些工具以適應 mvc 需要和建立分離的部件的代價是很高的,從而造成使用 mvc 的困難

2 - 優點

① 有利於通過工程化、工具化產生管理程式**

② 低耦合性,

重用性高

③ 可維護性好

IOS設計模式 MVC模式

提到ios中的mvc不得不提2011秋季斯坦福課程的老頭,他的iphone開發公開課是所有描述ios中mvc模式最為準確並且最為淺顯易懂的。模型 檢視 控制器 這個模式其實應該叫做mcv,用控制器把model與view隔開才對,也就是model與view互相不知道對方的存在,沒有任何瓜葛,他們就像乙...

iOS開發 MVC設計模式

聽說現在開始流行mvvm設計模式,聽上去好像有點新奇,暫時還是習慣mvc設計模式,接下來主講mvc模式.說到ios中的mvc還是從2011秋季斯坦福課程的老頭的iphone公開課講起,這個教授講的概念很準確 並且最為淺顯易懂的.model view controller mvc設計模式認為有三種型別...

IOS設計模式之三 MVC模式

提到ios中的mvc不得不提2011秋季斯坦福課程的老頭,他的iphone開發公開課是所有描述ios中mvc模式最為準確並且最為淺顯易懂的。模型 檢視 控制器 這個模式其實應該叫做mcv,用控制器把model與view隔開才對,也就是model與view互相不知道對方的存在,沒有任何瓜葛,他們就像乙...