淺析MVC模式

接觸iOS手機(jī)開發(fā)有一段時(shí)間了??傮w來說,蘋果公司設(shè)計(jì)的開發(fā)環(huán)境還是非常人性化的。很容易上手,也方便深入。

在組織大型項(xiàng)目的代碼文件時(shí),我們常用MVC的思想。MVC的概念講起來非常簡(jiǎn)單,就和對(duì)象(object)一樣。但是理解和應(yīng)用起來卻非常困難。今天我們就試著探討一下MVC設(shè)計(jì)理念。

M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。

比如一批統(tǒng)計(jì)數(shù)據(jù)可以分別用柱狀圖、餅圖來表示。

C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。

再實(shí)際開發(fā)中,M雖然本意是業(yè)務(wù)模型,但通常被理解為數(shù)據(jù)庫(kù)操作層。

V即界面層,這個(gè)沒有異議。

C則被理解為業(yè)務(wù)層。

對(duì)應(yīng)在ios中,V就是指.xib文件。C是指.m文件。但是,通常情況并不如我們想像的這么理想。因?yàn)榭蛻舻男枨笫乔ё內(nèi)f化的。很多時(shí)候,我們需要根據(jù)客戶的需求對(duì)界面進(jìn)行自定義。所以,很多時(shí)候界面代碼和會(huì)混淆在.m文件中和控制層代碼摻雜在一起。

在我個(gè)人的設(shè)想中,MVC這三層分別要完成哪些工作呢?

1、M層 模型(更多的是數(shù)據(jù)庫(kù)模型)

(1)創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建相應(yīng)的表

(2)完成針對(duì)數(shù)據(jù)庫(kù)各個(gè)表的增、刪、改、查的操作類

(3)映射數(shù)據(jù)庫(kù)各個(gè)表的實(shí)體類(這個(gè)實(shí)體類的作用就是溝通數(shù)據(jù)庫(kù)層(M)和控制層(C)的橋梁,同時(shí)這個(gè)實(shí)體類也將擔(dān)負(fù)其后臺(tái)數(shù)據(jù)(xml、sbjson等)與本地?cái)?shù)據(jù)的溝通和存儲(chǔ))

本層要實(shí)現(xiàn)的功能:

(1)

本層輸入件:sql增加或插入數(shù)據(jù)庫(kù)表對(duì)應(yīng)的實(shí)體類的對(duì)象的語句

本層輸出件:增加、或插入數(shù)據(jù)庫(kù)

(2)

本層輸入件:sql查詢語句

本層輸出件:返回存儲(chǔ)實(shí)體類對(duì)象的數(shù)組

(3)

本層輸入件:sql刪除語句

本層輸出件:刪除數(shù)據(jù)庫(kù)中的指定信息

2、V層 視圖

不用多講了,在ios中,這個(gè)層主要由.xib文件完成。如果客戶由自定義需求,則在.m文件中實(shí)現(xiàn)。

本層實(shí)現(xiàn)的功能就是控件的布局。

3、C層 控制

這個(gè)層的意義就在于確保M和V的同步。我個(gè)人理解,這層不僅叫控制層,更應(yīng)該叫業(yè)務(wù)層。

本層要實(shí)現(xiàn)的功能:

(1)

本層輸入件:界面控件中數(shù)據(jù)和事件

本層輸出件:

第一:調(diào)用M層的接口,更新M層(數(shù)據(jù)庫(kù))中的數(shù)據(jù)

第二:調(diào)用V層的接口,更新V層(界面)中的數(shù)據(jù)

在現(xiàn)實(shí)的開發(fā)過程中,代碼真的就這么清晰地分成以上三種嗎?

現(xiàn)實(shí)中,工程中還有以下幾種類型的代碼:

(1)接口文件[數(shù)據(jù)操作]

(2)解析通過接口獲取的數(shù)據(jù)[數(shù)據(jù)操作]

(3)開源框架(實(shí)現(xiàn)各種界面效果、解析各種數(shù)據(jù))[數(shù)據(jù)操作+V顯示]

(4)工具類(比如為圖片增加圓角、實(shí)現(xiàn)checkbox、實(shí)現(xiàn)各種頁(yè)面效果、數(shù)據(jù)加密解密)[數(shù)據(jù)操作+V顯示]

(5)本項(xiàng)目提煉的公用類(如驗(yàn)證、升級(jí)檢測(cè)、數(shù)據(jù)更新等)[數(shù)據(jù)操作M]

業(yè)務(wù)層BusinessLayer:

可以調(diào)用:數(shù)據(jù)層

可以被調(diào)用:控制層

組織當(dāng)前軟件獨(dú)特的業(yè)務(wù)體系,只處理數(shù)據(jù),和數(shù)據(jù)層和控制層有關(guān)系,和界面層沒有任何關(guān)系。

常見業(yè)務(wù):

(1)數(shù)據(jù)同步(用到數(shù)據(jù)層數(shù)據(jù)操作和界面層的數(shù)據(jù))

(2)軟件升級(jí)

(3)登錄驗(yàn)證

(4)賬號(hào)有效性驗(yàn)證

控制層ControllerLayer:只負(fù)責(zé)數(shù)據(jù)層和界面層的數(shù)據(jù)同步(通過業(yè)務(wù)層來實(shí)現(xiàn))

數(shù)據(jù)層DataLayer:只和數(shù)據(jù)打交道,和業(yè)務(wù)毫無關(guān)系

界面層ViewLevel:只和界面打交道,和控制層打交道,和其他層毫無關(guān)系

上面寫的比較亂,來張圖,看看能不能捋清楚,知道我們?cè)趯?shí)際編碼過程中組織各種代碼和文件:

用MVC思想重構(gòu)一個(gè)項(xiàng)目的核心就是剝離出這個(gè)項(xiàng)目的業(yè)務(wù)邏輯。

什么是項(xiàng)目的業(yè)務(wù)邏輯?所謂業(yè)務(wù)邏輯關(guān)注點(diǎn)主要集中在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì)。簡(jiǎn)而言之,所謂業(yè)務(wù)邏輯就是指業(yè)務(wù)規(guī)則。凡事有規(guī)則的東西,就是業(yè)務(wù)邏輯,沒有規(guī)則的東西就不是業(yè)務(wù)邏輯。

利用MVC思想組織的文件結(jié)構(gòu)一例:

參考:

用自己的話講對(duì)mvc的理解,直觀http://hi.baidu.com/javvinnet/item/c231542073c3f851c38d5944

對(duì)mvc專業(yè)的解釋:http://www.cnblogs.com/shanyou/archive/2010/04/03/1703501.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容