5

如果一个类在对象创建过程中需要多个字段信息,并且它允许的信息更少。比我们有两个选择
1. 提供多个构造函数,或
2. 允许客户端在创建对象时传递空参数。

其中,这是最佳实践。例如:
案例 1:

public class Test {
    Test(A ob1,B ob2, C ob3){

    }
    Test(A ob1,B ob2){
            this(ob1, ob2, null);    
    }
    public static void main(String args[]){
        Test ob = new Test(new A(),new B());
    }
}

案例2:

public class Test {
    Test(A ob1,B ob2, C ob3){

    }
    public static void main(String args[]){
        Test ob = new Test(new A(),new B(), null);
    }
}

我在同一个班级中使用了主要方法。请在其他类中考虑这些主要方法。

4

5 回答 5

9

使用多个构造函数是最好的。许多标准 API 库也实现了它。此外,它使代码松散耦合,而不是通过传递显式“null”值来创建对象的好习惯。

案例 2 增加了高耦合的机会。

除了主要问题:阅读更多:在 Java 中处理多个构造函数的最佳方法

编辑:

使用命名工厂方法来构造对象是更好的做法,因为它们比具有多个构造函数更具自我记录性。[Joshua Bloch 的有效 Java]

于 2012-05-16T07:13:44.050 回答
1

案例一是偏爱。这是在 API 中具有此选项的大多数类中完成的。这也意味着如果需要,您可以在未来的版本中更改第二个/第三个/... 参数,而无需升级对构造函数的调用。

于 2012-05-16T07:01:19.863 回答
1

案例 3,提供将创建对象的方法。

public class A {

  public static A create(B b) {
     A a = new A();
       a.setB(b);
  }

  public static A create(B b, C c) {
     A a = create(b);
       a.setC(c);

   return a;
  }

  private A() {} 

  public void setB(B);
  public void setC(C);

} 

构造函数应该能够创建对象以防止内存泄漏。其中较少的参数可以最大程度地减少发生 NullPointerException 的情况。提供像呈现的工厂方法将降低风险并改善对对象的控制。

于 2012-05-16T07:08:58.297 回答
0

第一种情况是最好的。为什么要避免使用多个构造函数?除非你不打电话给他们,否则他们不会打扰你。拥有不同的构造函数也增加了代码的可读性,因为很清楚实例化对象需要哪些参数,而在 null 情况下,您总是必须查看不需要哪些参数。

于 2012-05-16T07:08:11.140 回答
0

没有输入空值,因此您可能会为未来的错误和怀疑创造机会

 new Thing( myA, null, null)

这里不清楚目的是传递一个空 B 和一个空 C,

 new Thing (myA)

是明确的

于 2012-05-16T07:41:28.050 回答