【发布时间】:2010-02-19 07:40:50
【问题描述】:
在 Google 的 Protocol Buffer Java API 中,他们使用这些漂亮的 Builder 来创建对象(请参阅 here):
Person john =
Person.newBuilder()
.setId(1234)
.setName("John Doe")
.setEmail("jdoe@example.com")
.addPhone(
Person.PhoneNumber.newBuilder()
.setNumber("555-4321")
.setType(Person.PhoneType.HOME))
.build();
但是对应的 C++ API 并没有使用这样的 Builder(见here)
C++ 和 Java API 应该做同样的事情,所以我想知道他们为什么不在 C++ 中使用构建器。这背后是否有语言原因,即它不是惯用的,或者它在 C++ 中不受欢迎?或者可能只是编写 C++ 版本 Protocol Buffers 的人的个人喜好?
【问题讨论】:
-
我认为这可能是 C++ 实现者的个人偏好。构建器在 C++ 代码中(至少根据我的经验)并不被讨厌,事实上,我在对象可能具有 a)许多参数或(更有可能)b)许多可选参数的地方都使用它们。跨度>
-
您在问题中没有注意到的一件事是 Person 类是不可变的。
标签: java c++ design-patterns builder