MVC設計模式

下面的這些概念很大一部分是百度大神的,我會在轉述的時候加上自己的意見^^

什麼是MVC

MVC翻譯過來就是模型-視圖-控制器模式,m=model,v=view,c=controller。常見的jsp+javabean+servlet就是典型的MVC模式。

使用MVC的目的是把m和v分離,使得一樣的邏輯可以有不同的表現形式。比如同一批統計數據可以分別以柱狀圖和餅圖來表示,c的作用是進行M與V之間的數據同步。

MVC的優點

  1. 低耦合性:視圖層(V)和業務層(C)分離,這樣就允許修改視圖的同時不需要重新編譯或修改控制器的代碼。同樣,一個應用的業務流程或者業務規則的改變只需要改動MVC的模型層即可。百度上是這樣說的,我覺得有點吹牛了。在模型層代碼改動的時候,相應的其他兩層有很大可能是也需要修改的,使用MVC的話,帶來的好處只是在修改代碼的時候,思路會很清晰,不會輕易遺漏掉什麼,修改後的測試也會比較容易排查(個人心得^^)。
  2. 高重用性和可適用性:這個作用很重要,但是覺得和第一點有點重複,感覺第一點是原因,這裏是結果,又有誇大的嫌疑。低耦合帶來的必然是高可重用性和高可維護性。不多說了。
  3. 較低的生命週期成本:百度上說MVC使降低開發和維護用戶接口的技術含量成爲可能。個人覺得MVC這方面的作用要看項目的規模還有要求。MVC模式開發項目的時候,第一個版本會慢一些,因爲考慮到MVC給項目設計帶來的複雜度,還有爲了解耦而做的一些額外工作,對性能有很大要求的項目其實是不適合MVC的。但是一旦框架搭起來以後,MVC會讓你覺得後續開發順風順水。
  4. 快速部署:使用MVC模式使開發時間得到相當大的縮減,他使程序員集中精力於業務邏輯,界面程序員集中於表現形式上。個人覺得有了MVC不能否定了溝通,沒有完美的設計,無論是UI還是邏輯在時間階段必然會遇到各種問題,最初設計也可能被修改,這時候,各個小組之間的同步就很重要。但是,MVC確實能省略掉很多不必要的等待。
  5. 可維護性:不說了,第一條帶來的好處。

MVC的缺點

  1. 首先就是,MVC沒有明確的定義,所以完全理解MVC就要靠構架師的實際經驗,也就是對個人能力的過分依賴,MVC的使用,帶來對設計階段更加嚴格的要求,會大幅度增加複雜度和設計風險。
  2. 對測試有相當的要求,每個模塊必須嚴格的經過單元測試。同時,由於解耦,調試會有些困難。
  3. 將一個程序分成三個組件,帶來最直觀的不爽就是要維護多三倍的文件數量,會增加部分工作量。但是,當你需要改動項目的時候就會發現,這些是值得的。
  4. MVC不適合小項目,白白增加複雜度。

MVC如何工作

 MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。

  • 視圖

  視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演着重要的角色,但一些新的技術已層出不窮,它們包括Adobe Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services.

  如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能爲你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理髮生,不管這些數據是聯機存儲的還是一個僱員列表,作爲視圖來講,它只是作爲一種輸出數據並允許用戶操縱的方式。

  • 模型

  模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusion Components這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能爲多個視圖提供數據。由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重複性。

  • 控制器

  控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器(例如:servlet)本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後確定用哪個視圖來顯示模型處理返回的數據。

  現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章