淺析MVC模式

接觸iOS手機開發有一段時間了。總體來說,蘋果公司設計的開發環境還是非常人性化的。很容易上手,也方便深入。

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

M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。

比如一批統計數據可以分別用柱狀圖、餅圖來表示。

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

再實際開發中,M雖然本意是業務模型,但通常被理解為數據庫操作層。

V即界面層,這個沒有異議。

C則被理解為業務層。

對應在ios中,V就是指.xib文件。C是指.m文件。但是,通常情況并不如我們想像的這么理想。因為客戶的需求是千變萬化的。很多時候,我們需要根據客戶的需求對界面進行自定義。所以,很多時候界面代碼和會混淆在.m文件中和控制層代碼摻雜在一起。

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

1、M層 模型(更多的是數據庫模型)

(1)創建數據庫、創建相應的表

(2)完成針對數據庫各個表的增、刪、改、查的操作類

(3)映射數據庫各個表的實體類(這個實體類的作用就是溝通數據庫層(M)和控制層(C)的橋梁,同時這個實體類也將擔負其后臺數據(xml、sbjson等)與本地數據的溝通和存儲)

本層要實現的功能:

(1)

本層輸入件:sql增加或插入數據庫表對應的實體類的對象的語句

本層輸出件:增加、或插入數據庫

(2)

本層輸入件:sql查詢語句

本層輸出件:返回存儲實體類對象的數組

(3)

本層輸入件:sql刪除語句

本層輸出件:刪除數據庫中的指定信息

2、V層 視圖

不用多講了,在ios中,這個層主要由.xib文件完成。如果客戶由自定義需求,則在.m文件中實現。

本層實現的功能就是控件的布局。

3、C層 控制

這個層的意義就在于確保M和V的同步。我個人理解,這層不僅叫控制層,更應該叫業務層。

本層要實現的功能:

(1)

本層輸入件:界面控件中數據和事件

本層輸出件:

第一:調用M層的接口,更新M層(數據庫)中的數據

第二:調用V層的接口,更新V層(界面)中的數據

在現實的開發過程中,代碼真的就這么清晰地分成以上三種嗎?

現實中,工程中還有以下幾種類型的代碼:

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

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

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

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

(5)本項目提煉的公用類(如驗證、升級檢測、數據更新等)[數據操作M]

業務層BusinessLayer:

可以調用:數據層

可以被調用:控制層

組織當前軟件獨特的業務體系,只處理數據,和數據層和控制層有關系,和界面層沒有任何關系。

常見業務:

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

(2)軟件升級

(3)登錄驗證

(4)賬號有效性驗證

控制層ControllerLayer:只負責數據層和界面層的數據同步(通過業務層來實現)

數據層DataLayer:只和數據打交道,和業務毫無關系

界面層ViewLevel:只和界面打交道,和控制層打交道,和其他層毫無關系

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

用MVC思想重構一個項目的核心就是剝離出這個項目的業務邏輯。

什么是項目的業務邏輯?所謂業務邏輯關注點主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計。簡而言之,所謂業務邏輯就是指業務規則。凡事有規則的東西,就是業務邏輯,沒有規則的東西就不是業務邏輯。

利用MVC思想組織的文件結構一例:

參考:

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

對mvc專業的解釋:http://www.cnblogs.com/shanyou/archive/2010/04/03/1703501.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容