[英]lombok @Builder vs constructor
我对java很新。 有人能解释我使用的优势, lombok
@Builder
创建一个对象,而不是构造函数调用?
MyObject o1 = MyObject.builder()
.id(1)
.name("name")
.build();
MyObject o2 = new MyObject(1, "name")
这只是一个更好的可见度问题吗?
考虑:
Order order = new Order("Alan", "Smith", 2, 6, "Susan", "Smith");
参数是什么意思? 我们必须查看构造函数规范才能找到答案。
现在有了一个建设者:
Order order = Order.builder()
.originatorFirstName("Alan")
.originatorLastName("Smith")
.lineItemNumber(2)
.quantity(6)
.recipientFirstName("Susan")
.recipientLastName("Smith")
.build();
它更加冗长,但阅读非常清楚,并且在IDE的帮助下,它也很容易编写。 构建器本身是一件苦差事,但像Lombok这样的代码生成工具对此有所帮助。
有些人认为,如果你的代码需要构建器可读,那就暴露出其他气味。 你使用的基本类型太多了; 你在一个班级里放了太多的田地。 例如,考虑:
Order order = new Order(
new Originator("Alan", "Smith"),
new ItemSet(new Item(2), 6),
new Recipient("Susan", "Smith"));
......不使用构建器,这是不言自明的,因为我们使用的是更多具有单一职责和更少字段的类。
这不是一个特定于lombok的功能,这称为构建器模式。
想象一下,你有一个包含20个参数的类,其中10个是可选的。 您可以以某种方式使大量构造函数处理此逻辑,或者使用所有这些参数创建构造函数并在某些位置传递null。 构建器模式不简单吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.