mvc無人不知,可很多程式設計師對mvc的概念的理解似乎有誤,換言之他們一直在錯用mvc,儘管即使如此軟體也能被寫出來,然而軟體內部**的組織方式卻是不科學的,這會影響到軟體的可維護性、可移植性,**的可重用性。
mvc即model、view、controller即模型、檢視、控制器。我在和同行討論技術,閱讀別人的**時發現,很多程式設計師傾向於將軟體的業務邏輯放在controller裡,將資料庫訪問操作的**放在model裡。
最終軟體(**)的**結構是,view層是介面,controller層是業務邏輯,model層是資料庫訪問。
不知道大家知不知道另外一種軟體開發模式三層架構,它和mvc相似之處是也分為三層,分別是ui層表示使用者介面,bll層表示業務邏輯,dal層表示資料訪問。三層架構曾經紅極一時,mvc大行其道之後它就銷聲匿跡了, 可現在看來, 它似乎只是改頭換面, 裝扮成mvc的樣子,並且深受程式設計師們的歡迎,因為它的這種分層方式和前文描述的mvc如出一轍。
再說的直白點,很多程式設計師將mvc當成了三層架構在用,這看起來似乎沒什麼問題,畢竟三層架構也是一種和mvc齊名的架構模式。可問題在於用三成架構的思路寫mvc,那麼寫出來的東西既不是三成架構也不是mvc,到是像乙個什麼都不是四不像。熟悉天龍八部的同學應該知道這樣一段情節,吐蕃番僧鳩摩智強行用道家的小無相功為基礎修煉少林的七十二絕技和易筋經最終導致走火入魔。其實用這個例子來形容現在一些程式設計師用三層架構的思想寫mvc最恰當不過了,三層架構的核心思想是面向介面程式設計和各層之間的解耦和可替換性,mvc框架中沒有這種概念,因為mvc要面對的問題本就不是三成架構要面對的問題,所以以mvc為基礎寫出來的三成架構是不會具備三層架構的核心要義的,換言之,這種**是放棄了三層架構和mvc的精華,獲得了它們的糟粕,是愚蠢的編碼方式。
我吐槽了這麼多,對於吐槽的理由要是說不出個所以然來,估計要被人噴死,下面就來說說mvc本質原理和正確使用方式,當然,這裡的mvc指的最純粹mvc,適合各類軟體,而不僅僅指web框架中的變體mvc,然而萬變不離其宗,文中所述的mvc思想同樣適用於web開發。
mvc要實現的目標是將軟體使用者介面和業務邏輯分離以使**可擴充套件性、可復用性、可維護性、靈活性加強。
view層是介面,model層是業務邏輯,controller層用來排程view層和model層,將使用者介面和業務邏輯合理的組織在一起,起粘合劑的效果。所以controller中的內容能少則少,這樣才能提供最大的靈活性。
比方說,有乙個view會提交資料給model進行處理以實現具體的行為,view通常不會直接提交資料給model,它會先把資料提交給controller,然後controller再將資料**給model。假如此時程式業務邏輯的處理方式有變化,那麼只需要在controller中將原來的model換成新實現的model就可以了,控制器的作用就是這麼簡單, 用來將不同的view和不同的model組織在一起,順便替雙方傳遞訊息,僅此而已。
springmvc中 view 理解為jsp,json controller理解為dispatcherservlet model就是我們的三層架構中的業務邏輯了
MVC和三層架構
一 mvc m model 模型 應用程式的核心功能,管理這個模組中用的資料和值 v view 檢視 檢視提供模型的展示,管理模型如何顯示給使用者,它是應用程式的外觀 c controller 控制器 對使用者的輸入做出反應,管理使用者和檢視的互動,是連線模型和檢視的樞紐。1.1 mvc如何工作 m...
MVC和三層架構
一 mvc m model 模型 應用程式的核心功能,管理這個模組中用的資料和值 v view 檢視 檢視提供模型的展示,管理模型如何顯示給使用者,它是應用程式的外觀 c controller 控制器 對使用者的輸入做出反應,管理使用者和檢視的互動,是連線模型和檢視的樞紐。1.1 mvc如何工作 m...
MVC和三層架構
mvc是軟體工程中的一種架構模式,把軟體系統分為三個部分 模型 model 檢視 view 控制器 controller 控制器 controller 控制請求的處理邏輯,並對請求進行處理,負責請求 檢視 view 即使用者看到並與之互動的介面 模型 model 模型代表著一種企業規範,就是業務流程...