Просто обдумываю шаблон Builder, и у меня есть несколько (нуб) вопросов. В основном, почему мы не можем просто упростить создание объекта-строителя?
Вместо этого:
public final class Foo {
private final String name;
private final String description;
private Foo(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public static class Builder {
private String name;
private String description;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setDescription(String description) {
this.description = description;
return this;
}
public Foo build() {
return new Foo(name, description);
}
}
}
//Use it
Foo f = new Foo.Builder().setName("test").setDescription("description").build();
Почему бы просто не использовать это?
public final class Foo {
private String name;
private String description;
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public Foo setName(String name){
this.name=name;
return this;
}
public Foo setDescription(String description){
this.description=description;
return this;
}
}
//Use it
Foo f = new Foo().setName("test").set("description");
Я вижу, может быть, первый используется, когда вы хотите построить неизменный объект, но кроме этого, почему я не могу просто использовать второй вместо этого? Это намного проще. Пожалуйста, предоставьте как можно больше примеров.