首先在这里简短回答,我要写一篇关于它的博客文章,谢谢你的想法!
所以,让我们假设我们有这个:
class PresenterAndController
{
public void Control()
{
Present();
}
public void Present()
{
// present something
}
}
首先,我们需要将所有直接成员的用法转换为间接的,即用字段限定它们。为此,请使用提取超类重构将 Presenter 部分提取到超类中:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
public void Control()
{
Present();
}
}
在 PresenterAndController 中创建将委派一个字段并使用 Generate(Alt-Ins)创建委派成员。它们碰巧会隐藏基本方法,因为它们是相同的:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
private Presenter myPresenter;
public void Present() // hides base method
{
myPresenter.Present();
}
public void Control()
{
Present(); // it now references method from this type
}
}
从继承列表中删除 Presenter,您就完成了拆分类。现在您可以提取接口,尽可能使用基本类型,并以其他方式整理它。