|
|
1
44
我过去所做的就是使用类似的东西, Model-View-Presenter . [注意:这篇文章以前可以在网上找到。要现在看到它,你需要下载CHM,然后查看文件属性并单击“解除阻止”。然后你可以打开CHM并找到这篇文章。非常感谢,微软! 叹气 ] 表单就是视图,我有一个IView界面。所有的处理都发生在演示者中,演示者只是一个类。该表单创建了一个新的演示者,并将其自身作为演示者的IView传递。这种测试方式可以传递一个假的IView,然后从演示者向其发送命令并检测结果。 如果我要使用一个完整的模型视图控制器,我想我会这样做:
这将符合 the classic MVC diagram 最大的缺点是,对于事件,很难分辨谁订阅了什么。MVP模式使用方法而不是事件(至少是我实现它的方式)。当表单/视图引发事件(例如someButton.Click)时,表单只需调用演示者上的方法来运行其逻辑。视图和模型根本没有任何直接连接;他们都必须通过演讲者。 |
|
|
2
21
好吧,实际上Windows Forms实现了MVC的“自由风格”版本,就像一些电影实现了一些经典书籍(罗密欧与朱丽叶浮现在脑海中)的一些糟糕的“自由样式”解释一样。 我并不是说Windows窗体的实现不好,只是。..不同。 如果您使用Windows窗体和适当的OOP技术,并且可能使用类似ORM的EntitySpaces进行数据库访问,那么您可以这样说:
尽管用同一个对象表示View和Controller会使代码与表示方式的分离变得更加困难(在从Microsoft.Windows.Forms.Form派生的类中插入“GTK+视图”没有简单的方法)。 如果你足够小心,你能做什么。保留您的表单代码 完全地 通过仅在事件处理程序中编写与GUI相关的内容,以及在单独的类中编写所有其他业务逻辑,将其与控制器/模型代码分开。在这种情况下,如果你想使用GTK+编写另一个视图层,你只需要重写GUI代码。 |
|
3
16
Windows窗体不是从头开始设计使用MVC的。你有两个选择。
首先,你可以自己实现MVC。
第一种方法很容易开始,但越深入,就越复杂。我建议寻找一个好的、预先存在的、经过良好测试的MVC框架,设计用于与Windows窗体配合使用。我相信 this blog post 这是一个不错的起点。 对于任何刚开始的人来说,如果你有选择的话,我建议跳过Windows窗体,针对WPF进行开发。这是一个创建UI的更好的框架。有许多MVC框架正在为WPF开发,包括 this one 和 that one . |
|
4
4
据微软称,@jasonbunting提到的UIP应用程序块是“存档的” Smart Client Application Block 或更新的 Smart Client Software Factory ,同时支持WinForms和WPF SmartParts。 |
|
|
5
2
查看 User Interface Process (UIP) Application Block 我对它了解不多,但几年前看过。可能有更新的版本,请四处查看。 “UIP应用程序块基于模型-视图-控制器(MVC)模式。” |