第三章 正確認識MVC

Laravel5.1教程

 

第三章正確認識MVC

一、名詞解釋:

MVC是一種軟件設計模式。何爲設計模式?設計模式通俗地講,就是一大堆碼農在生產實際中形成的通用的,固有的,久經考驗的成熟思維模式、編程算法。這樣的思維模式能簡化軟件開發,提高開發效率,避免重複造輪子。定位到MVC上,MVC解決的是我們程序的總體架構,決定了我們的程序由哪幾部分構成。

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

二、MVC的詳細釋義:

MVC是軟件企業級架構中的一種。下圖是一個典型的企業系統分層。

 

 

根據上圖,結合MVC思想,我們可以對照出以下關係:

視圖<->V

命令與控制<->C

業務邏輯、數據<->M

這樣的關係,在我們使用的框架中隨處可見。下邊我對MVC的功能介紹及分工做大致介紹。

一、M:

模型M,主要負責軟件業務邏輯處理,將系統功能分成一個個獨立的功能模塊,具體到php開發中,M的實現是必須避免$_POST,$_SESSION等這樣的超全局變量的。M應該具有一般化的輸入和一般化的輸出,這樣才能使M具有更強大的可複用性。現在有很多開發人員,認爲M就是數據庫,其實這是不對的,數據庫層是比M更低一級的封裝。M是業務邏輯層,雖然和數據打交道,但絕不是在M中簡單地寫點點數據庫操作,什麼update select。M是完整的業務邏輯功能模塊,比如我們寫個user M,user應該具有 登錄login($username,$password),退出logOut($username)這樣的業務函數。

二、V:

視圖層,展示數據。很多人認爲在視圖中不能寫php,寫php是種極爲糟糕的設計。簡單地認爲,寫php就不是數據分離。個人觀點,在視圖中將M返回的數據直觀地打印出來,沒有複雜的業務邏輯參雜其中就算數據分離了。

三、C:

控制器是什麼?控制器是將各種請求分解到M上,並根據M將數據返回到合適的V上的東西。現狀,不少人在C中寫了大量的業務邏輯代碼,將C變成了CM,而M純粹淪爲了數據層。

個人覺得,C做的工作,只有三種:

1、輸入前整理,將$_POST,這樣的強環境相關的數據變成通用的,統一的數據,也就是變成M需要的標準輸入。

2、M輸出後整理,由於M是標準輸入,標準輸出,輸出的結果,往往不能直接返回到V,這時就需要C做一些特定化的處理,比如用戶登錄函數login()返回了一個狀態碼,那麼我麼就可以在C中定義這個狀體碼對應的意義,再返回到V。

3、異常處理,在C中我們可以用try catch方法捕捉M中可能返回的異常,使我們的M更專注於業務邏輯的處理,而異常的信息由C來統一處理。

發佈了51 篇原創文章 · 獲贊 15 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章