说我有以下(C ++)
class Parent
{
Parent(Foo f){};
}
class Child : public Parent
{
Child(Foo f, Bar b)
: Parent(f)
{};
}
...
// And a whole bunch of other children, all calling Parent constructor
现在假设我需要向Parent构造函数
添加一个新参数Parent(Foo f, Baz z){};
然后我必须将每个子类更改为以下
Child(Foo f, Baz z, Bar b)
: Parent(f, z)
{};
无论如何,我可以避免改变每一个儿童班吗?
猜猜可能与此有关, how to avoid repetitive constructor in children 这表明我必须改变每个儿童班。
如果是这样,是否有任何语言/设计模式会让这种变化不那么痛苦?
答案 0 :(得分:2)
如果父构造函数的新参数是必需,那么实际上没有选择,你必须更新子类构造函数。
但是如果新参数不是必需的,只需将新的父构造函数添加为重载的构造函数,或者使用新参数的默认值。