回答
他們都是。
MVC是一種模糊的模式。
我對MVC的觀點是:
控制器
對象具有的模型的集合,具有用於查看和編輯模型的方法。它與模型交談並返回視圖的實例以及應用於其上的模型。
查看
連接到它的模型的定義,僅僅是一組功能來顯示一個特定的模式。
型號
封裝數據。具有返回狀態和更改狀態的方法。
//Controller
import Views
class Controller
private Models
//View
import Model
class View
//Model
class Model
模型不需要知道任何關於視圖/控制器。視圖需要知道模型的定義。一個控制器需要擁有模型和需要知道視圖的定義。
你可以更緊密地耦合它們,這是可選的。
他們都不是其實是錯誤的,但基於MVC和客戶端的MVC的Web(請求/響應)不同的方法。
在Web環境中的控制器是負責與用戶請求處理,修改所述模型(如果適用),找到正確的視圖,分配該模型信息,該視圖並將其返回給用戶。
在原始MVC模式(說話桌面應用程序)的模型直接更新視圖,每當它改變,並且與用戶輸入和應用邏輯的控制器處理相應地更新模型的更直接的解釋。但是,這對於普通的Web應用程序來說不起作用,因爲HTTP是無狀態的,並且沒有使用任何其他更新的技術(如評論中提到的長輪詢Ajax或websockets),服務器無法真正地通知客戶端模型中的更改。
圖1和圖4是正確的MVC模式。其餘的更接近MVP模式。
雖然在Web MVC你有被動型和變化由查看從型號拉,而不是由模型(Observer模式)被推。
嚴格來說,MVC是一種過時的模式。粗粒度來講,它引入了視圖和模型之間的依賴關係,因爲模型更新查看狀態直接 (http://www.mimuw.edu.pl/~sl/teaching/00_01/Delfin_EC/Overviews/MVC.htm),如顯示在圖4,在那裏你看到Model和View之間的直接互動,根據MVC原來,歷史提法,這是不可取的。事實上,今天我們已經修改了MVC的版本,有時我們會描述MVP並將其稱爲MVC。首字母縮略詞「MVC」的使用非常自由,以至於任何有三個元素的模型,視圖和控制器基本都是MVC,儘管有詳細的實施細節和職責定義。 MVC和MVP之間的區別非常微妙,當您描述它們時,它們駐留在View和Presenter(Controller)職責的定義中。實際上,Martin Fowler在幾年前給了MVP(和MVC)他的告別牌(http://www.martinfowler.com/eaaDev/ModelViewPresenter.html),我們可以從他的角色中找到稱爲Presentation Model(見http://martinfowler.com/eaaDev/PresentationModel.html)或PM的「新」模式的定義。微軟已經爲其WPF和Silverlight技術定義了另一種模式,稱爲Model-View-View-Presenter或MVVM(參見http://msdn.microsoft.com/en-us/magazine/dd419663.aspx),其中有Presentation Model作爲他的靈感。我想你可以看看所有這些傢伙,並且知道他們有多相似(不同)。在我看來,基本思想是Presentation數據和行爲保持在Presenter中,Model不知道View(所以圖4關閉,甚至是MVC),你應該能夠改變View(或者支持不同的View實施)以無痛的方式與Presenter和Model解耦。演示模型可以提供這一點,並且使用當前技術實現並且有效而徹底。
圖2,圖3和圖5對於MVC是準確的。向控制器發送請求時,它使用模型執行操作,然後迴應。
- 1. Spring MVC Web應用程序 - 正確使用Model
- 2. 正確關閉Java Web應用程序
- 3. 如何確定應用程序是否是Web應用程序
- 4. asp.net mvc 2 web應用程序裏面的Web應用程序?
- 5. 在MVC應用程序中緩存圖像的正確方法
- 6. 哪個Web應用程序框架?
- 7. 說一個ASP .NET MVC應用程序是一個HTTPModule是否正確?
- 8. 我的ASP.NET MVC應用程序結構是否正確?
- 9. 移動web應用程序 - 這是正確的方法嗎?
- 10. 在Web應用程序中使用圖層的正確方式是什麼
- 11. ASP.NET MVC Web應用程序與Web應用程序
- 12. ASP.NET MVC Web應用程序VS ASP.NET Web應用程序
- 13. 確定哪個應用程序正在使用音頻設備
- 14. Windows CMD:確定哪個應用程序正在使用文件
- 15. 確定哪個佈局應用程序當前正在使用
- 16. 哪個框架用於圖/ dnd java web應用程序
- 17. 確定哪個sidekiq進程屬於哪個應用程序
- 18. 哪一個是正確的地方可可應用程序中保存我自己的應用程序密碼?
- 19. 哪個項目結構按照MVC是正確的?
- 20. Google Data/OAuth/AppEngine/Python - 正確註冊一個Web應用程序
- 21. 在Visual Studio中設置MVC Web應用程序的正確方法?
- 22. jQuery的location.reload()是不是我的ASP.NET MVC Web應用程序
- 23. 如何正確安裝ASP.NET MVC應用程序作爲另一個MVC應用程序的子項?
- 24. mvc web應用程序中的應用程序變量刷新
- 25. 爲什麼ASP.NET MVC必須是一個Web應用程序?
- 26. Deply asp.net的MVC 4 Web應用程序
- 27. MVC 3 Web應用程序中的ERR_CONNECTION_RESET
- 28. MVC的.NET Web應用程序每週
- 29. MVC應用程序中的Web服務
- 30. 如何判斷Web應用程序\網站的哪個版本的MVC?
我擔心這可能是這種情況!我同意你的文字定義。 – Marcus 2011-05-11 15:45:18
在downvote,想證明這一點? – Raynos 2011-05-14 22:37:12