java - 需要很多输入参数的构造函数

标签 java oop constructor

我的问题涉及 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();

第二个变体看起来更优雅和干净,但如果类使用不当,则允许更多错误。

或者如果输入参数太多,类的设计是否存在问题?

最佳答案

如果真的有那么多参数,可能是你的类试图同时处理太多的事情。以此为暗示,它可以分解成更小的类。

或者,您可以将构造函数包设为私有(private),并使用 builder在同一个包中实例化它。

关于java - 需要很多输入参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556913/

相关文章:

java - 尝试测试具有存储库的服务的 Controller 时出现问题(Spring Boot)

java - 这段代码如何违反 Demeter 法则?

parameters - OOP 对象构造函数参数

c++ - 析构函数如何在简单程序中工作?

java - 正则表达式从链接中提取值

java - 如何保存算法对数组进行排序所需的步骤?

java - 在 Java 中访问 Scala 元组元素的正确方法是什么?

ios - 了解分配中结构和类的 Swift 属性的差异

objective-c - 用于 UI 主题的 iOS/Objective-C 设计模式

c++ - 在构造函数中使用类成员名称