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互相不知道對方的存在,沒有任何瓜葛,他們就像乙...