【发布时间】:2012-12-04 23:19:25
【问题描述】:
在 Web 上的 MVC 应用程序中,很容易在视图和控制器之间划清界限 - 视图向用户显示数据,而控制器收集输入并根据提供的输入将用户路由到视图。但是在有状态(例如桌面)应用程序中,要知道在哪里划线有点困难,因为操作之间的界限不像 Web 应用程序那样清晰。那么我在哪里画线呢?
例如,我的应用程序中有一个视图,它允许用户将项目放置在网格上。现在,我在视图本身中有“在网格上放置项目”代码(访问网格模型以进行实际放置)。但我也可以将它放在控制器中,并将必要的信息从视图传递给控制器。两者似乎都不是一个明确的选择 - 将代码放在视图中最终会使视图膨胀,因为用户可以执行大量操作,而不仅仅是放置项目;但是将它放在控制器中似乎是额外的间接级别,使代码更难遵循。
或者我做错了?这是一个 WinForms 应用程序;我的“视图”实际上是一个表单,表单本身既可以接收输入,也可以显示信息。那么区分就没有意义了吗?还是我应该将视图与表单分开?还是 MVC 模式与 WinForms 完全不兼容?
【问题讨论】:
标签: winforms model-view-controller design-patterns