3

我最近经常遇到的一个问题是我的演讲者班级变得太大的问题。通常情况下,我可以在不跳过节拍的情况下砍掉一堂普通的大课。但是演示者有时更难削减,而不会使代码更难遵循。

特别是当页面开始填充面向 CRUD 的控件时。有时我会划分控件,但如果它们受到其他控件的影响,则协调逻辑本身就很复杂。有时我会划分列表或网格数据检索,但有时可能会有类似的陷阱。

是否有任何技术、经验法则或您从演示者中重构出来的公共区域?

4

2 回答 2

9

我通常使用两种方法:

  1. 提取业务规则并将其委托给域类。
  2. 将视图分区为逻辑相关的控件,然后为每个分区创建一个新的视图界面。然后,您可以沿着这些相同的路线拆分您的演示者。如果您使用的平台支持子表单组件组(C# 用户控件、Delphi 框架等),这是制作可重用控件的强大方法。

更新

拆分视图时,我通常首先拆分界面并让我的表单实现多个界面。

public class ComplexForm: Form, ISubView, IOtherSubView
{
    ...
}

然后我将演示者分成我创建的许多视图。

public class SubViewPresenter
{
    private ISubView subView;
    ...
}

public class OtherSubViewPresenter
{
    private IOtherSubView otherSubView;
    ...
}

您可以更进一步,将 ISubView 和 IOtherSubView 的实现移至用户控件或保持原样。如果您使用的是被动视图模式,这只是小菜一碟,因为表单无论如何都只处理 UI 逻辑。一旦我拆分了演示者,我会尽量避免演示者之间的直接交流。如果需要任何通信,我会尝试通过域对象间接进行。

于 2009-05-07T16:58:39.240 回答
3

尝试提取在将数据传递到 DAL 或将其推送到视图之外执行活动的代码。例如,如果您必须进行电子邮件更新或执行业务逻辑,请尝试将它们提取到单独的类中。我经常处理同样的问题,并且一直在尝试将尽可能多的逻辑转移到各个域/实体类并在那里执行验证。

希望这会有所帮助。

于 2009-05-07T16:44:40.350 回答