【问题标题】:How is user input handled in MVC vs MVP?在 MVC 和 MVP 中如何处理用户输入?
【发布时间】:2016-05-06 14:11:23
【问题描述】:

我一直在阅读有关 MVC 与 MVP 的文章,并且经常提到的一点是 MVC 在处理用户输入的方式上与 MVP 不同。

在 MVP 中,视图将用户输入委托给 Presenter,而在 MVC 中,控制器应该是应用程序中管理用户输入的唯一部分。

这对我来说似乎有点奇怪。我从未遇到过 GUI 框架,我不必将视图中引发的事件(主要是某种小部件)委托给其他地方,以根据引发的事件执行某些操作。

如果是这样的话,MVC和Supervising Controller还有区别吗?

【问题讨论】:

    标签: model-view-controller architecture mvp


    【解决方案1】:

    没错。 MVC 和 MVP 完全不同,但是它们都是 UI 中分离关注点的模式。

    在 MVC 中,控制器处理请求(通过路由)并将数据推送到视图中,而在 MVP 中,所有事件和渲染都在视图中处理,而 Presenter 只处理 UI 的业务逻辑。这使得 UI 可测试。 MVP中没有url路由。

    MVP适用于windows应用和ASP.net Webforms,MVC更兼容Web应用(Java spring MVC,或者Asp.net MVC等)。

    【讨论】:

    • 我应该补充一点,我只是在谈论非 Web 应用程序。也许 MVP 成为桌面应用程序结构模式的流行术语是件好事,因为如今 MVC 与 Web 开发的关联太多了。
    • 没错,就桌面应用程序而言,这取决于您使用的技术类型。如果是 Windows Form Apps,MVP 是最合适的,而对于 WPF 和 silverlight 等技术,MVVM 更合适。一般来说,如果你的 UI 技术中有绑定功能,MVVM 是更好的选择。
    • 最后,MVP 及其所有变体(我将 MVVM 称为 MVP 变体)使用不同的机制做同样的事情。我刚刚在某个网站上遇到了我的问题中的定义,该网站将 MVP 与通过 smalltalk 社区流行的 MVC 模式进行了比较,有点困惑。
    猜你喜欢
    • 2015-09-30
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2022-04-28
    • 1970-01-01
    相关资源
    最近更新 更多