0

在 Web 上的 MVC 应用程序中,很容易在视图和控制器之间划清界限——视图向用户显示数据,而控制器收集输入并根据提供的输入将用户路由到视图。但是在有状态(例如桌面)应用程序中,要知道在哪里划界有点困难,因为操作之间的界限不像 Web 应用程序那样清晰。那么我在哪里画线呢?

例如,我的应用程序中有一个视图,它允许用户将项目放置在网格上。现在我在视图本身中有“在网格上放置项目”代码(访问网格模型以进行实际放置)。但我也可以将它放在控制器中,并将必要的信息从视图传递给控制器​​。两者似乎都不是一个明确的选择 - 将代码放在视图中最终会使视图膨胀,因为用户可以执行大量操作,而不仅仅是放置项目;但是将它放在控制器中似乎只是额外的间接级别,使代码更难遵循。

还是我对这一切都错了?这是一个 WinForms 应用程序;我的“视图”实际上是一个表单,表单本身既可以接收输入,也可以显示信息。那么区分就没有意义了吗?或者我应该让视图与表单分开吗?还是 MVC 模式与 WinForms 完全不兼容?

4

1 回答 1

0

MVC 是关注点分离。它旨在帮助程序员将这两个区域的细节分开。模型和视图是对象的集合/分组。

VIEW 中的每个对象都可能是 BUTTON、WINDOW、TEXTAREA 等类集的一部分。

模型中的每个对象都将具有与您的域相对应的类型,例如 CUSTOMER_DETAILS、ADDRESS、POSTCODE 等

CONTROLLER 对象为您的 MODEL 对象提供了一个接口,您的 VIEW 对象将使用该接口与您的系统进行通信。CONTROLLER 还可能包含无法存储在您的 MODEL 对象中的功能。

传统的 MVC 还允许 VIEW 对象绕过 CONTROLLER 并直接与 MODEL 对象对话,但不建议这样做。

所有的对象都符合OO原则,都是完整的、功能齐全的对象。

于 2012-12-04T23:41:20.867 回答