1

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

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 块。在这种情况下,可扩展性也不是很好。

4

3 回答 3

8

在这里使用构建器模式怎么样?有关代码示例,请参见Javacodegeeks 的此链接

QueryProducer.withQuery(yourQuery).withA(a).withB(b).build();
于 2013-09-28T11:31:13.637 回答
0

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

于 2013-09-28T11:36:04.547 回答
0

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

  • 我的构造函数是否有 4 个或更多参数?
  • 我是否重载了构造函数?
  • 我的构造函数是否具有指定可选数据的参数?
  • 我是否希望在将来的某个日期向我的构造函数添加更多参数?
  • 我是否想要 JavaBean 模式的可读性同时仍然能够构造不可变对象?
于 2013-09-28T12:00:48.577 回答