代码之家  ›  专栏  ›  技术社区  ›  MatteS

MVP、WinForms—如何避免视图、演示者和演示模型臃肿

  •  4
  • MatteS  · 技术社区  · 15 年前

    在winforms中实现MVP模式时,我经常发现视图接口过于臃肿,属性、setter和getter太多。一个简单的例子是一个有3个按钮和7个文本框的视图,所有这些按钮和文本框都有值、启用和可见的属性。为此添加验证结果,您很容易得到一个具有40ish属性的接口。使用表示模型,也会有一个具有相同数量属性的模型。

    如何轻松地同步视图和表示模型,而不必使用臃肿的表示器逻辑来回传递所有值?(使用80行的presenter代码,想象一下,使用模拟模型和视图的presenter测试将看起来像..160行的代码来模拟传输。)有没有框架可以在不依赖winforms数据绑定的情况下处理这个问题?(您可能希望使用与winforms视图不同的视图。根据一些人的说法,这个同步应该是演示者的工作……)你会使用AutoMapper吗?

    也许我问错了问题,但在我看来,MVP很容易变得臃肿没有一些好的解决办法在这里。。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Jay    15 年前

    我知道很多人都有不同的想法。

    public class UiField<ContentType>
    {
        public bool IsEnabled { get; set; }
        public ContentType Value { get; set; }
        public bool IsVisible { get; set; }
    }
    

    在你看来,那么:

    public interface ISampleView
    {
        UiField<bool> IsStaffFullTime { get; set; }
        UiField<string> StaffName { get; set; }
        UiField<string> JobTitle { get; set; }
        UiField<int> StaffAge { get; set; }
        UiField<IList<string>> Certifications { get; set; }
    }
    

    顺便说一句,我建议您不要手动对这些接口进行存根测试——使用模拟框架。

    推荐文章