我有一种强烈的感觉,我不知道在这种情况下使用什么模式或特定的语言技术。
那么,问题本身就是如何在支持 OOP 的语言中管理类层次结构中不断增长的参数列表?我的意思是,如果对于层次结构中的根类,假设有 3 个或 4 个参数,那么在它的派生类中,你需要调用基本构造函数并为对象的派生部分传递附加参数,依此类推……参数列表变为即使您的继承深度超过两个,也是巨大的。
我很确定许多 SOwers 都面临过这个问题。我对如何解决它感兴趣。提前谢谢了。
问问题
268 次
6 回答
4
具有长参数列表的构造函数表明您的类正在尝试做太多事情。解决该问题的一种方法是将其分解,并使用“协调器”类来管理各个部分。具有与其超类显着不同的构造函数参数列表的子类是类做得太多的另一个例子。如果一个子类真的是一个超类,那么它不应该需要更多的数据来完成它的工作。
也就是说,偶尔会有一个类需要处理大量相关对象的情况。在这种情况下,我会创建一个新对象来保存相关参数。
于 2009-08-18T11:03:26.303 回答
2
备择方案:
- 使用 setter 注入代替构造函数注入
- 将参数封装在单独的容器类中,然后在构造函数之间传递。
于 2009-08-18T10:59:53.783 回答
1
不要使用构造函数一次初始化整个对象。只有它初始化那些(1)对象存在绝对需要的东西和(2)必须在创建时立即完成的事情。这将大大减少您必须传递的参数数量(可能为零)。
对于像您这样的典型层次结构,SalariedEmployee >> Employee >> Person
您将使用 getter 和 setter 来检索和更改对象的各种属性。
于 2009-08-18T11:03:29.720 回答
1
0
另一个提示:保持你的类层次结构浅,更喜欢组合而不是继承。这样,您的构造函数参数列表将保持简短。
于 2009-08-18T11:14:38.293 回答