我曾经创造了很多新的形式.这导致了很多重复的代码和表单,做了类似的事情.
现在,对于执行类似作业的表单,例如从特定数据库表中查看/编辑/删除项目,我创建一个带有必需控件的窗体,使用该窗体创建一个具有诸如控件集合等参数的类的实例以及包含数据库表名称的字符串.然后个人控制调用类的功能.
高级表单将继承并扩展这个基本的表单类.
解决方法
在我看来,传统的MVC架构的大问题在于,人们对于表单类来说太多了.这增加了你需要做的手动测试的数量.
您编译之后可以进行的自动测试越多,您的桌面将会遇到更多的错误.在一个复杂的应用中,甚至微小的变化的副作用太频繁.
解决这个问题的技巧是制作一个控制器组件,表单组件(或EXE)引用.每个表单在组合中都有一个相应的类.单击一个按钮将调用ThisForm.ThisButton(< args>),然后在框架中触发较低的对象.每个表单实现一个接口,以便如果控制器类需要表单中的附加信息,则它有一个接口来检索它.
然后,对于您的unit testing,您可以通过实施虚拟类来模拟运算符执行复杂操作,以触发事件并将信息提供给控制器类.控制器类不知道任何不同,因为虚拟类实现所有预期的接口.
有一个重要的例外,就是微不足道的对话.对于有几个复选框的对话框,我觉得这个组织是过度的.我使用了command pattern很多.所以在我定义Command对象的程序集中,我把与该命令关联的SIMPLE对话框.如何简单的对话框必须得到这种治疗取决于你.
我喜欢结构化我的应用程序如下.
>实用程序 – 这是一个有我一直使用的东西的程序集 – 数学函数,文件函数等>对象 – 这具有我用于此应用程序的特定对象.> UIFramework – 这定义了所有的窗体和控制器接口.>命令 – 这具有操纵我的应用程序对象的所有Command对象.UI – 实现控制器接口的对象> EXE – 实现表单接口并调用控制器对象的表单.