我有一种强烈的感觉,我不知道在这种情况下使用什么样的模式或特定的语言技术
那么,问题本身就是如何在具有OOP支持的语言中管理类层次结构中不断增长的参数列表?我的意思是,对于你所拥有的层次结构中的根类,让我们说3或4个参数,然后在它的派生类中,你需要调用基础构造函数并为对象的派生部分传递附加参数,等等......参数列表成为即使你的遗传深度超过两个,也是巨大的。
我很确定很多SOwers都遇到了这个问题。我对如何解决它感兴趣。非常感谢提前。
答案 0 :(得分:4)
具有长参数列表的构造函数表明您的类正在尝试执行太多操作。解决该问题的一种方法是将其拆分,并使用“协调员”类来管理这些问题。具有与其超类显着不同的构造函数参数列表的子类是类做得太多的另一个示例。如果一个子类真正是一个超类,那么它不需要更多的数据来完成它的工作。
也就是说,偶尔会出现类需要处理大量相关对象的情况。在这种情况下,我会创建一个新对象来保存相关参数。
答案 1 :(得分:2)
备选方案:
答案 2 :(得分:1)
的可能性:
答案 3 :(得分:1)
不要使用构造函数一次初始化整个对象。只有初始化那些(1)对象存在绝对需要的东西和(2)必须在创建时立即完成的东西。这将大大减少您必须传递的参数数量(可能为零)。
对于像SalariedEmployee >> Employee >> Person
这样的典型层次结构,您将拥有getter和setter来检索和更改对象的各种属性。
答案 4 :(得分:1)
查看代码可以帮助我建议解决方案..
然而long parameter lists是代码味道,所以我要仔细看看需要这个的设计。建议的重构是
但是,如果您发现绝对需要这个和长继承链,请考虑使用像object这样的哈希/属性包作为唯一参数
public MyClass(PropertyBag configSettings)
{
// each class extracts properties it needs and applies them
m_Setting1 = configSettings["Setting1"];
}
答案 5 :(得分:0)
另一个提示:保持您的类层次结构浅,更喜欢组合继承。这样你的构造函数参数列表将保持简短。