java - 在 Java 中的另一个构建器中使用构建器

标签 java design-patterns

在 Java 中的另一个构建器中使用构建器是一个好习惯,还是最好向“更高”级别的构建器添加方法以在幕后创建对象?

new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();

最佳答案

在另一个构建中重用构建器逻辑很好,正如 Andy Turner 在其评论中所述:您不想重复代码。
但以这种方式执行链接确实不可读:

Car car = new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();

您可以采用不同的格式,但它仍然无法直接理解:

Car car = 
new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build())
                    .build();   

在局部变量中提取 Engine 实例看起来确实更加清晰:

Engine engine = new Engine.EngineBuilder().name("Diesel").weight(5).build();
Car car = new Car.CarBuilder().engine(engine).build();

关于java - 在 Java 中的另一个构建器中使用构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282712/

相关文章:

java - 如何允许从 shutdownHook 登录任何类

java - 如何在 Java 中对多个继承对象建模

java - "string-free coding"是一个常用术语吗?

java - 什么是NullPointerException,我该如何解决?

java - 从文件中保存和加载 SMO weka 模型

deployment - 在不安装jre的情况下运行java?

java - 如何构建良好的 Java GUI 应用程序设计模式?

java - 如何在 Java 的公共(public)方法中访问变量?

java - 在 Spring 表达式中创建映射

design-patterns - 构建器模式和构造函数之间的区别