0

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

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

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

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

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

4

1 回答 1

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更容易。

于 2013-06-26T22:06:11.683 回答