你会如何落实视在Windows形式应用程序?
-
02-07-2019 - |
题
我不开发太多的台式/Windows形式应用程序,但它已经发生,我认为可能有一些好处,以使用的视(模型图控制器)模式适用于Windows的形式。净发展。
有任何人实施软Windows形式?如果是这样,你有任何的技巧的设计?
解决方案
我做了什么在过去是使用类似的东西, 模型视主持人.
[注:本文使用的可在网。看到它现在,你需要下载信息交换所机制,然后视文件的性质并击解锁。然后你可以打开的信息交换所机制和查找的文章。万分感谢,微软! 叹息]
该形式是查看,我有一个有限或没有接口。所有处理发生在主持人,这仅仅是一类。形式创建一个新的主持人,并将自己作为主讲者的很高兴.这种方式用于测试可以通过在一个假的,显示,相反,然后送命令到它从主持人和检测的结果。
如果我们要使用一个全面的模型图控制器,我想我愿意做这样的:
- 该形式是的 看.它发出的命令的模式,引发事件,它控制器可以订阅,并且赞同的事件模型。
- 的 控制器 是一类赞同这样的观点发生的事件和发送命令景和模型。
- 的 模型 引发的事件,图赞同。
这将符合 经典的视图.最大的缺点是,与事件,它可以很难告诉谁的订阅是什么。MVP式使用的方法,而不是事件(至少我实现的话)。当形式/视图引发事件(例如someButton.点击),将形成简单的电话的方法上的主持人,以运行逻辑的。图和模型没有任何直接的连接;他们都必须要经过的主持人。
其他提示
嗯,实际上Windows Forms实现了“自由风格”。 MVC的版本,就像一些电影实现了一些糟糕的“自由风格”。解读一些经典书籍(罗密欧与朱丽叶的想法)。
我不是说Windows Forms的实现很糟糕,只是......不同。
如果您使用Windows窗体和适当的OOP技术,并且可能使用像EntitySpaces这样的ORM来进行数据库访问,那么您可以这样说:
- ORM / OOP基础架构是模型
- 表格是观点
- 事件处理程序是Controller 醇>
尽管同一个对象所代表的View和Controller都使代码分离代码变得更加困难(在从Microsoft.Windows.Forms.Form派生的类中插入“GTK +视图”并不容易)
如果你足够小心,你能做什么。通过在事件处理程序中编写GUI相关内容以及在单独的类中编写所有其他业务逻辑,将表单代码完全与控制器/模型代码分开。在这种情况下,如果您想使用GTK +编写另一个View层,您只需要重写GUI代码。
根据微软的说法,@ jasonbunting提到的UIP应用程序块是“存档的”。相反,请查看智能客户端应用程序块或更新的< a href =“http://msdn.microsoft.com/en-us/library/aa480482.aspx”rel =“nofollow noreferrer”>智能客户端软件工厂,它支持WinForms和WPF SmartParts。
检查 用户界面流程(UIP)应用程序块强> 。我不太了解它,但几年前看了它。可能有更新的版本,请查看。
&quot; UIP应用程序块基于模型 - 视图 - 控制器(MVC)模式。“
查看MS模式和实践智能客户端应用程序块,其中包含一些指导和类,可引导您在Windows窗体中实现模型视图演示器模式 - 查看包含的参考应用程序。
对于WPF,棱镜项目正在取代
软件工厂方法是学习最佳实践的好方法