建造者模式多个可变参数

4

我正在阅读 Joshua Bloch 的《Effective Java》中的第2个条款,他提到在处理构造函数中的多个参数时使用 Builder 模式的优点。一切都很好,直到我看到传统构造函数和此模式之间的多个变量差异。

因此,我对此有一些疑问:

  1. Builder 模式如何允许有多个 var-args?
  2. 为什么传统构造函数只允许一个 var-arg?(也许是因为如果有多个 var-arg,则会导致不确定性,当定义的数据类型相同时,但我不确定这是背后的正确原因。)

虽然我没有在我的代码中使用过 var-args,但我知道它们的用途。但我仍然无法理解上述语句背后的原因。任何帮助将不胜感激。

1个回答

7

没有任何方法签名(包括构造函数)允许使用多个可变参数。只能有一个,并且它必须是最后一个参数。

这只是语言规范中的一种限制。是的,原因很可能是如果允许更多的灵活性,它很快就会变得模糊不清。

在建造者模式中,没有这样的限制,因为每个参数都可以获得自己的方法。

  builder
    .withOptions("a", "b", "c")   // varargs
    .withColors("red", "blue")    // more varargs
    .build();

你能分享一下代码吗?你会如何在这里编写建造者模式? - mitali
@mitali:上面的代码片段是建造者模式的一个示例。 - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接