考虑下面的POJO,它有一个复合键、keyA和keyB、一些值和一个lombok构建器注释。 @Builder
class Foo {
int keyA;
int keyB;
String author;
String value;
... other stuff
} 使用传统的构建器范例,您只需将所有构建器元素链接在一起即可。 List<Foo> list = new ArrayList<>();
list.add(Foo.builder().keyA(1234).keyB(1).author("Bob Jones
我看到了许多Builder模式的实现(主要是在Java中)。它们都有一个实体类(比如一个Person类)和一个构建器类PersonBuilder。构建器“堆叠”各种字段,并返回带有传递参数的new Person。为什么我们显式地需要一个构建器类,而不是将所有构建器方法放在Person类本身中?
例如:
class Person {
private String name;
private Integer age;
public Person() {
}
Person withName(String name) {
this.name = name;
r
下面哪一种是更好的实现构建器模式的方法?
1)使用对象来构建而不是构建器中的所有属性(并在构建器构造函数中创建它):
public class Person {
private String firstName;
// other properties ...
private Person() {}
// getters ...
public static class Builder {
// person object instead of all the person properties
private Per
如果我将可变对象引用(例如Map或列表或带有setters的某个对象)传递给构建器以创建复杂对象,则如果我直接调用引用对象上的变异方法,那么已经构建的对象的状态可以很容易地更改。
例如;
public final class Foo {
private final String name;
private final ArrayList hobbies;
...
public static class Builder {
private final String name;
private final ArrayList hobbie