我最近经常遇到的一个问题是我的演示者课程变得太大了。通常,我可以在不跳过节拍的情况下切断常规的大班。但是主持人有时候更难以削减,而不会让代码更难以遵循。
特别是当页面开始填满面向CRUD的控件时。有时我将控制分开,但如果它们受到其他控制的影响,协调逻辑本身就很复杂。有时我会将列表或网格数据检索分开,但有时候会有类似的陷阱。
您是否有任何技巧,经验法则或公共区域可以从演示者身上重构出来?
答案 0 :(得分:9)
我通常使用两种方法:
<强>更新强>
在拆分视图时,我通常首先拆分界面并让我的表单实现多个接口。
public class ComplexForm: Form, ISubView, IOtherSubView
{
...
}
然后我将演示者分成了我创建的许多视图。
public class SubViewPresenter
{
private ISubView subView;
...
}
public class OtherSubViewPresenter
{
private IOtherSubView otherSubView;
...
}
您可以更进一步,将ISubView和IOtherSubView的实现移动到用户控件或保持原样。如果您使用的是被动视图模式,那么这是儿童游戏,因为表单只会处理UI逻辑。一旦我拆分演示者,我会尽量避免演示者之间的直接沟通。如果需要任何通信,我尝试通过域对象间接进行。
答案 1 :(得分:2)
尝试提取在将数据传递到DAL或将其推送到视图之外执行活动的代码。例如,如果您必须执行电子邮件更新或执行业务逻辑,请尝试将这些更新提取到单独的类中。我经常处理同样的问题,并且一直试图将尽可能多的逻辑移动到各个域/实体类并在那里执行验证。
希望这有用。