我已经看到了一些方法来进行这种属性共享,从最基本的(每个参数传递属性)和界面(到目前为止我发现的最干净的方式),但是我想知道是否有其他方法,甚至更好,这样做,因为我正在重构我的主要课程,并希望避免长时间再次这样做。
问题如下,我有一个有几个孩子的母班,但是根据公司的需要,正在创建其他孩子,并且一些孩子的方法被传递给母亲,而今天母亲已经有了15个孩子。属性和更多60种可以完美划分为类的方法。
我的课程是这些迷茫的怪物,我并不为此感到骄傲,所以你应该理解她为什么要为重构而哭泣:
public class A
{
protected Form myForm = new Form();
protected WebBrowser myBrowser = new WebBrowser();
protected List<ComplexType1> List1 = new List<ComplexType1>();
protected List<ComplexType2> List2 = new List<ComplexType2>();
protected List<ComplexType3> List3 = new List<ComplexType3>();
protected List<ComplexType4> List4 = new List<ComplexType4>();
protected ComplexType5 myData;
// And more attribute ...
public A() { }
protected virtual void Method1() {}
protected virtual void Method2() {}
protected virtual void Method3() {}
protected virtual void Method4() {}
protected virtual void Method5() {}
// And more and more methods ...
}
public class B : A
{
protected ComplexType6 anotherData;
public B() : base() {}
protected override void Method3() {}
protected override void Method4() {}
protected virtual void Method6() {}
}
public class C : A
{
public C() : base() {}
protected override void Method1() {}
protected virtual void Method6() {}
protected virtual void Method7() {}
}
// And more and more child classes ...
答案 0 :(得分:1)
从它的外观来看,你有一个很棒的类,它被许多其他类继承。
解决一个庞大的类并加上继承的最佳方法是避免它。
这两种情况都会遇到很多问题,如果你的基类功能太多,你必须修改它。修改基类将影响所有派生类,您将难以跟踪和测试它。与共享变量结合使用,您将不知道基类是否更新了它或派生类是否更新了它。
我建议将基类分解为更小的类,以实现密切相关的功能。更喜欢继承的组合。这将减少您的成员/变量共享并具有可管理的代码。