代码之家  ›  专栏  ›  技术社区  ›  ljs TheVillageIdiot

在winforms中实现干净的ui功能,同时保持一个像样的分离架构的最佳方法是什么?

  •  5
  • ljs TheVillageIdiot  · 技术社区  · 16 年前

    我倾向于使用相当自文档化的void dosomething()方法来实现ui功能,即如果用户按下此按钮,则执行此操作,然后启用此列表框、禁用该按钮等。这是最佳方法吗?是否有更好的通用用户界面管理模式,即如何根据用户输入控制何时启用/禁用等?

    我常常觉得自己正转向“无所不能的大类”反模式,因为似乎有太多的东西与“主”窗体类交互。通常,即使我将私有状态变量包含在使用相对模块化设计实现的类中,我仍然发现它增长得如此之快,这是荒谬的。

    所以人们能给我一些好的建议,让我在不陷入这些陷阱的情况下生产出高质量的、可测试的、分离的winforms设计吗?

    4 回复  |  直到 16 年前
        1
  •  13
  •   Gulzar Nazim    16 年前

    你可以试试 MVP 如果你想把ui的逻辑放在一个单独的类中..

    在模型视图presenter中,正如martin fowler或michael feathers所说,ui的逻辑被分成一个名为presenter的类,该类处理来自用户的所有输入,并告诉“哑”视图显示什么以及何时显示。该模式的特殊可测试性来自这样一个事实:整个视图可以用一个模拟对象替换,这样,最重要的部分presenter就可以很容易地单独进行单元测试。

        2
  •  3
  •   Keith Nicholas    16 年前

    在winforms中使用mvp模式非常好。

    看一看 http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf

        3
  •  0
  •   Mark Cidade    16 年前

    我只将ui逻辑放在form类中,并将任何应用程序逻辑放在它自己的类中:

    class Form1 : Form
     {  
        void Button1_Click
         { 
           Program.DoCommand1();
         }
     }
    
    
    static class Program
    {
      internal static void DoCommand1() {/* ... */}
    }
    
        4
  •  0
  •   Dillie-O    16 年前

    我最近一直在努力的一件事是利用.net的部分类特性来处理这些较大类型的表单。如果我有一个选项卡控件,上面有5个不同的选项卡。我将创建部分类并将文件命名为cardimportmethods.cs、managelookuptables.cs等,同时将其全部保留为集中式窗体类的一部分。

    即使只使用ui逻辑,在管理这些东西时,这种故障也有帮助。