在有状态的应用程序中,我应该在哪里绘制视图和控制器之间的界限?

时间:2012-12-04 23:19:26

标签: winforms model-view-controller design-patterns

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

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

或者我说这一切都错了?这是一个WinForms应用程序;我的“视图”实际上是一种形式,而形式本质上都可以接收输入和显示信息。这种区别是否毫无意义?或者我应该将视图与表单分开?或者MVC模式是否与WinForms完全不兼容?

1 个答案:

答案 0 :(得分:0)

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

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

MODEL中的每个对象都有一个与您的域相对应的类型,例如CUSTOMER_DETAILS,ADDRESS,POSTCODE等

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

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

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