我正在使用 Javascript (WinJS) 和 HTML 构建一个简单的 Windows 8 LOB 应用程序。在应用程序中,我不希望有任何第三方依赖项。在决定应用程序结构时,我正在讨论哪种模式最适合技术和 WinJS 框架。
我对使用这些模式的主要优点/缺点的初步想法如下。
MVVM
- 优点:ViewModel 中业务逻辑的清晰分离,使 BL 的(单元)测试变得容易
- 缺点:WinJS 只有开箱即用的一次性和单向数据绑定,没有双向数据绑定和命令(绑定到事件)。这些必须以自定义方式实现(如果想要在视图上坚持主要是声明性语法,这可能会变得很棘手)。
MVP
- 优点:presenter 仍然包含所有业务逻辑以及视图逻辑,并且可以自行(单元)测试。这种方法不需要数据绑定。
- 缺点:View 和 Presenter 代码都将比 MVVM 更冗长,因为它们现在必须在状态更改时相互通知。View 需要将事件转发给 Presenter,Presenter 必须在其状态发生变化时更新 View。
MVC
- 优点:视图非常轻量级,这种方法也不需要数据绑定。
- 缺点:控制器必须注册和处理输入事件(例如键盘和鼠标事件)以及包含业务逻辑。与 MVVM 中的 ViewModel 和 MVP 中的 Presenter 相比,这个类将是最臃肿且更难(单元)测试的。
基于这些,我会选择 MVP 来构建这个应用程序。你同意还是反对?