在Java中在另一个构建器中使用builder是一种好的做法,还是在“更高”级别的构建器中添加方法来在幕后创建对象会更好?
new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();
发布于 2018-09-12 03:36:37
正如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();
发布于 2018-09-12 03:56:00
我更喜欢这种方法:
首先构建引擎,然后使用专用的engine(...)
设置器构建汽车
Engine engine = new EngineBuilder().name("Diesel").weight(5).build();
Car car = new CarBuilder().engine(engine).build();
https://stackoverflow.com/questions/52282712
复制相似问题