在 C++ 中使用构建器模式时,建议设置器返回对构建器对象的引用吗?

发布于 2024-11-27 09:30:36 字数 537 浏览 4 评论 0原文

我正在考虑在 C++ 单元测试中使用构建器模式,以简化正在测试的代码的输入数据的创建。

在 Java 中,常见的习惯用法似乎是让构建器类的 setter 返回构建器对象本身(引用),以便可以将多个 setter 链接在一行中。例如构建器类可以这样定义:

// class builder 
public class Builder
{
  private Part1 part1;
  private Part2 part2;
  public Builder withPart1(Part1 p1);
  public Builder withPart2(Part2 p2);
};

然后像这样使用:

Builder b;
Part1 p1;
Part2 p2;
b.withPart1(p1).withPart2(p2);

通过让 setter 返回对构建器对象的引用,可以在 C++ 中实现相同的效果。然而,我在网上找不到任何这样的例子。这种“链接”在 C++ 中是常见做法吗?如果不是,那为什么不呢?

I am thinking of using the builder pattern in C++ unit tests, to streamline the creation of input data for the code being tested.

In Java the common idiom seems to be to have the setters of the builder class return the (reference to) the builder object itself, so that multiple setters can be chained in a single line. E. g. the builder class could be defined like this:

// class builder 
public class Builder
{
  private Part1 part1;
  private Part2 part2;
  public Builder withPart1(Part1 p1);
  public Builder withPart2(Part2 p2);
};

And then used like this:

Builder b;
Part1 p1;
Part2 p2;
b.withPart1(p1).withPart2(p2);

The same effect can be achieved in C++ by having the setters return a reference to the builder object. However, I have not been able to find any examples of that on the web. Is this kind of "chaining" a common practice in C++? And if no, then why not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

农村范ル 2024-12-04 09:30:36

是的,这是一种常见的做法,它被称为“Fluent API”。

典型的例子:

while ((std::cin >> std::setbase(16) >> i >> s).getline(s2)) { ... }

Yes it's a common practice, it's called a "Fluent API".

The canonical example:

while ((std::cin >> std::setbase(16) >> i >> s).getline(s2)) { ... }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文