我倾向于使用相当自我记录的void doSomething()方法来实现UI功能,即如果用户按下此按钮然后执行此操作然后启用此列表框,禁用该按钮等.这是最好的方法吗?是否有更好的模式用于一般UI管理,即如何控制何时启用/禁用控件等.等取决于用户输入?
我常常觉得自己正在转向"做一切"反模式的"大班",因为很多人似乎与"主要"形式的班级互动.通常,即使我在类中包含使用相对模块化设计实现的私有状态变量,我仍然发现它增长得如此之快,这是荒谬的.
那么人们可以给我一些很好的建议来制作高质量,可测试,分离的WinForms设计而不会陷入这些陷阱吗?
如果要将UI的逻辑放在单独的类中,可以尝试MVP.
在模型视图演示者中,正如Martin Fowler或Michael Feathers所说,UI的逻辑被分成一个名为presenter的类,它处理来自用户的所有输入,并告诉"哑"视图显示什么以及何时显示.模式的特殊可测试性来自于整个视图可以用模拟对象替换的事实,并且以这种方式,作为最重要部分的演示者可以容易地单独地进行单元测试.