如何避免if语句和调用多个构造函数

时间:2013-09-28 11:29:14

标签: java oop if-statement

我想问一下如何处理多个构造函数。

if(a != null && b != null)
    return new QueryProducer(query, a, b);
else if(a != null)
    return new QueryProducer(query, a);
else if(b != null)
    return new QueryProducer(query, b);
else return new QueryProducer(query);

我想避免复杂的if else块。在这种情况下,可伸缩性也不是很好。

3 个答案:

答案 0 :(得分:8)

在这里使用构建器模式怎么样?有关代码示例,请参阅Javacodegeeks的this link

QueryProducer.withQuery(yourQuery).withA(a).withB(b).build();

答案 1 :(得分:0)

创建一个构建器,根据传递的参数构建QueryProducer。您可以将用于创建对象的所有逻辑放在一个位置。我想到的另一件事是将所有三个参数传递给构造函数,并在那里处理它,但我几乎总是避免在构造函数中放置任何逻辑,因为可能发生异常。

答案 2 :(得分:0)

正如其他人已经回答的那样,如果您遇到以下任何一种情况,那么您应该强烈考虑使用Builder模式(使用辅助对象 - 通常由对象类中的静态嵌套类定义 - - 构造你想要的对象:

  • 我的构造函数有4个或更多参数吗?
  • 我是否超载了构造函数?
  • 我的构造函数是否具有指定可选数据的参数?
  • 我希望将来在我的构造函数中添加更多参数吗?
  • 我是否希望JavaBean模式的可读性,同时仍然能够构造不可变对象?