代码重构 - 长基数/超级参数列表

时间:2013-06-26 21:59:22

标签: design-patterns refactoring builder

这些文章详细介绍了如何修复长构造函数

但他们没有说的是我们如何通过长期的super()或base()调用解决问题?即

LongConstructorClass(string s1, string s2, string s3, string s4, string s5) { }

InheritsLongConstructorClass() : base("foo","bar","foo","bar","foo") { }

当我有多个构造函数并且每个构造函数都有一个很长的base()调用时,它基本上会让我烦恼。

1 个答案:

答案 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