首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中的另一个构建器中使用构建器

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

Stack Overflow用户
提问于 2018-09-12 03:09:23
回答 2查看 933关注 0票数 1

在Java中在另一个构建器中使用builder是一种好的做法,还是在“更高”级别的构建器中添加方法来在幕后创建对象会更好?

代码语言:javascript
复制
new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();
EN

回答 2

Stack Overflow用户

发布于 2018-09-12 03:36:37

正如Andy Turner在其评论中所说的那样,在另一个构建中重用构建器逻辑是很好的:您不想重复代码。

但是以这种方式执行链接确实是不可读的:

代码语言:javascript
复制
Car car = new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();

你可以改变它的格式,但它仍然不是直接可以理解的:

代码语言:javascript
复制
Car car = 
new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build())
                    .build();   

在局部变量中提取Engine实例看起来要清晰得多:

代码语言:javascript
复制
Engine engine = new Engine.EngineBuilder().name("Diesel").weight(5).build();
Car car = new Car.CarBuilder().engine(engine).build();
票数 3
EN

Stack Overflow用户

发布于 2018-09-12 03:56:00

我更喜欢这种方法:

首先构建引擎,然后使用专用的engine(...)设置器构建汽车

代码语言:javascript
复制
Engine engine = new EngineBuilder().name("Diesel").weight(5).build();
Car car = new CarBuilder().engine(engine).build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52282712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档