2016-02-12 14 views
2

我一直在閱讀MVC vs MVP,經常做的一點是MVC與MVP在處理用戶輸入方面的區別。在MVC vs MVP中如何處理用戶輸入?

在MVP中,視圖將用戶輸入委託給演示者,而在MVC中,控制器應該是管理用戶輸入的應用程序的唯一部分。

這對我來說似乎有點奇怪。我從來沒有遇到過一個GUI框架,我不必將視圖中提出的事件(主要是某種小部件)委託給其他位置,以根據引發的事件執行某些操作。

如果是這樣的話,MVC和Supervising Controller之間還有區別嗎?

回答

1

沒錯。 MVC和MVP是完全不同的,但它們都是在用戶界面中分離問題的模式。

在MVC中,控制器處理請求(通過路由)並將數據推送到視圖中,而在MVP中,所有事件和呈現都在視圖中處理,演示者只處理UI的業務邏輯。這使得UI可測試。 MVP中沒有網址路由。

MVP適用於windows應用程序和ASP.net Webforms,而且MVC與Web應用程序(Java spring MVC或Asp.net MVC等)更兼容。

+0

我應該補充說我只是在談論非web應用程序。也許這是一件好事,MVP越來越成爲桌面應用程序結構模式的流行術語,因爲現在MVC與Web開發方式有很大關係。 –

+0

確切地說,就桌面應用而言,它取決於您使用的技術類型。如果它是Windows Form應用程序,MVP是最合適的,而對WPF和Silverlight等技術來說,MVVM更合適。一般來說,如果您的UI技術中有綁定功能,MVVM是更好的選擇。 – akazemis

+0

最後MVP及其所有變體(我將MVVM稱爲MVP變體)使用不同的機制做同樣的事情。我剛剛在一些網站的問題中遇到了這樣的定義,即將MVP與通過Smalltalk社區流行的MVC模式進行比較,並且有點困惑。 –