这些文章详细介绍了如何修复长构造函数
但他们没有说的是我们如何通过长期的super()或base()调用解决问题?即
LongConstructorClass(string s1, string s2, string s3, string s4, string s5) { }
InheritsLongConstructorClass() : base("foo","bar","foo","bar","foo") { }
当我有多个构造函数并且每个构造函数都有一个很长的base()调用时,它基本上会让我烦恼。
答案 0 :(得分:2)
ParameterObject
设计模式可用于将多个参数值组合到单个对象中。考虑一下这样的设计:
public class MyClassOld {
MyClassOld(param1,param2,param3,param4) {...}
}
写成
public class ParamObject {
ParamObject(param1,param2,param3,param4) { }
}
public class MyClassNew {
MyClassNew(ParamObject p) {}
}
public class MyChildClassNew {
MyChildClassNew(ParamObject p) { super(p); }
}
现在,您可以为ParamObject
添加构建器模式,以便更轻松地构建ParamObject
。