iOS開發基礎 MVC

2021-07-23 23:56:02 字數 1844 閱讀 9904

mvc模式我們談得夠多了,但總有一些爭議,比如rac說明文件裡關於mvc的描述是這樣的:

來自reactivecocoa專案

史丹福大學的ios公開課第一課:

來自斯坦福公開課

中文維基百科上mvc條目的配圖:

來自中文維基百科

乍一看,以上都是三角形,都描述了model、view、controller三者的關係,controller都處於view與model的中間位置。

這裡再明確一下mvc的基本定義:

mvc模式(model–view–controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(model)、檢視(view)和控制器(controller)。

簡單的說,mvc只是定義了乙個物件導向的軟體系統裡,各個物件的角色。

三者概念並不難理解,難點在與這三者的互動關係,上面各方展示的關係裡(線條表示),最大的差別在與model 與 view 的關係,除了斯坦福那幅圖,其它都建立了view與model 之間的聯絡,無論間接還是直接。實際開發中,給乙個tableviewcell 傳遞乙個「model」,也是常見做法。

但是,這樣對嗎?

這裡我們想一下物件導向設計的目的:

物件導向的重要特性是封裝,而封裝的目的在於復用

來自多看閱讀

這時,給這個tableview的cell傳遞乙個book的model物件,是很自然的,而且顯得很方便,畢竟cell要展示的封面、書名、簡介、作者,book物件都能提供。

來自muji passport

注意到,其實cell的布局是很相似的

// 注意這裡是偽**

ifobject

isclass

book

cell.image = object.coverimage

cell.title = object.title

else

ifobject

isclass

cloth

cell.image = object.image

cell.title = object.productname

我們看下蘋果官方如何描述mvc三者的關係:

來自蘋果開發文件

可見,

蘋果的定義是view 與 model 徹底分離,換句話說,這兩者並不知對方的存在!

再注意下斯坦福的示意圖,view 與 model 之間是雙實線,

考過駕照的童鞋都知道其含義是不要越界

只有這樣,才能定義出可復用的物件,也符合了物件導向程式設計的初衷:抽象

mvc是cocoa 框架的核心,蘋果要求任何類,必須是這三種角色之一。

IOS開發基礎之 MVC模式

整理自史丹福大學iphone開發公開課,並加入了一些自己的理解。一 概念 model 你的應用程式是什麼,是使用者介面無關的部分 controller 你的應用程式如何將model顯示給使用者 ui邏輯 是中心是橋梁,連通model和view view controller的奴才 minion 小跟...

IOS開發基礎之 MVC模式

整理自史丹福大學iphone開發公開課,並加入了一些自己的理解。一 概念 model 你的應用程式是什麼,是使用者介面無關的部分 controller 你的應用程式如何將model顯示給使用者 ui邏輯 是中心是橋梁,連通model和view view controller的奴才 minion 小跟...

iOS開發中的MVC

m model,個人理解為業務邏輯,也就是你的程式處理了一些什麼樣的業務,一般是一系列的api供controller呼叫 v view,檢視,也就是你的程式外觀 ui,你所能看到,觸控到的,程式的展現 c controller,控制器,個人理解為程式邏輯,作為m和v溝通的橋梁,在ios開發中經常被放...