【发布时间】:2015-04-17 21:04:24
【问题描述】:
我的问题涉及 java 中的构造函数。我了解到我们应该尽量减少方法的参数数量,包括构造函数。因此,如果我有一个需要创建大量输入参数的类,我该怎么做才最好。我应该
A) 将它们全部包含在构造函数方法签名中:
例子:
public MyClass(SomeThing A, Vector v, OtherThing B, int number.. etc.){
// construct
}
..
MyClass c= new MyClass(..);
c.doSomethingWithAllYouGot();
B) 我可以只构建很少的东西,然后要求对象用户在调用特定方法之前添加东西
public MyClass(SomeThing A){
// construct
}
..
MyClass c=new MyClass(A);
c.attributeVector(v);
c.connectTo(B);
c.setNumber(n);
// etc.
c.doSomethingWithAllYouGot();
第二个变体看起来更优雅、更干净,但如果类使用不正确,则会出现更多错误。
或者如果输入参数太多,类的设计是否有问题?
【问题讨论】:
-
考虑调整builder pattern
-
首先,避免使用
Vector;自 Java 1.2 以来,新代码中不鼓励使用它。此外,大量的构造函数参数通常表明你的类做了太多的事情,应该被分解。
标签: java oop constructor