可能重复:
What's the best way to refactor a method that has too many (6+) parameters?
如果构造函数有一个很长的参数列表,我们应该考虑它的坏样式并重构吗?如果是,怎么样?
答案 0 :(得分:12)
考虑使用Builder
。而不是一个构造函数,其中一些参数可以是null
:
Foo foo = new Foo(name, id, description, path, bar);
而不是伸缩构造函数 - 即为每个参数组合制作一个构造函数,您可以:
Foo foo = new FooBuilder().setName(name).setPath(path).build();
答案 1 :(得分:3)
这可能是一组合适的参数,但很多时候我的回答都是肯定的。将参数分解为逻辑子分组(如果它们存在),即不是从许多不同的部分创建Car,将某些部分分组为Engine对象,将某些部分分组为Chasis等。
或者,如果其中一些参数是可选的,请使用构建器模式,以便在必要时仅包含它们。
但最终,做对你和你的领域最有意义的事情。
答案 2 :(得分:0)