2

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

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

MVVM

MVVM

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

MVP

MVP

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

MVC

MVC

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

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

4

1 回答 1

2

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

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

于 2012-10-29T22:08:49.020 回答