model-view-controller - WinJS:MVVM、MVP 或 MVC 更适合它吗?

标签 model-view-controller mvvm windows-8 mvp winjs

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




我正在使用 Javascript (WinJS) 和 HTML 构建一个简单的 Windows 8 LOB 应用程序。在应用程序中,我不希望有任何第三方依赖项。在决定应用程序结构时,我正在讨论哪种模式最适合技术和 WinJS 框架。

我对使用这些模式的主要优点/缺点的初步想法如下。

MVVM

MVVM

  • 优点:ViewModel 中业务逻辑的清晰分离,使 BL 的(单元)测试变得容易
  • 缺点:WinJS 只有开箱即用的一次性和单向数据绑定(bind),没有双向数据绑定(bind)和命令(绑定(bind)到事件)。这些必须以自定义方式实现(如果想要在 View 上坚持主要是声明性语法,这可能会变得很棘手)。

  • MVP

    MVP
  • 优点:presenter 仍然包含所有业务逻辑以及 View 逻辑,并且可以自行(单元)测试。这种方法不需要数据绑定(bind)。
  • 缺点:View 和 Presenter 代码都将比 MVVM 更冗长,因为它们现在必须在状态更改时相互通知。 View 需要将事件转发给 Presenter,Presenter 必须在其状态发生变化时更新 View。

  • MVC

    MVC
  • 优点: View 非常轻量级,这种方法也不需要数据绑定(bind)。
  • 缺点: Controller 必须注册和处理输入事件(例如键盘和鼠标事件)以及包含业务逻辑。与 MVVM 中的 ViewModel 和 MVP 中的 Presenter 相比,这个类将是最臃肿且更难(单元)测试的。

  • 基于这些,我会选择 MVP 来构建这个应用程序。你同意还是反对?

    最佳答案

    我会发布一些东西,因为我喜欢你解释不同设计模式和良好图形的方式(顺便说一句,你有这些的来源吗?你应该包括它)

    MVVM 的缺点是双向更新必须以自定义方式实现。但是,对于 MVP 范式,您似乎无论如何都必须以自定义方式执行此操作。如果您使用 MVP,您是否根本不使用任何数据绑定(bind)?我想说,使用 MVVM 并找出解决 WinJS 问题的方法。我不熟悉 WinJS,但似乎您可以将其包装在自定义对象/属性中并触发更改的事件以以某种方式处理数据绑定(bind)。

    关于model-view-controller - WinJS:MVVM、MVP 或 MVC 更适合它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127540/

    相关文章:

    c# - Xaml,按钮的click事件在命令之前运行?

    windows - Windows 8 RTM 是否支持 VB6 (SP6) 运行时文件?如果有,是哪些?

    java - 如何在 Struts 2 中使用 View ?

    java - 如何从数据库中获取用户名和密码并传递给 Spring MVC 中的方法

    c# - 会 try catch - 导致 CPU 使用率高吗?

    c# - XAML 绑定(bind)问题 Windows Phone 中的 ImageSource

    ruby-on-rails - 辅助方法或模型或 Controller ?

    mvvm - 导航主机片段重复 id

    XAML 数据网格数据模板

    c# - 如何关闭应用栏(Windows 8 Metro)