Foo foo = Foo.builder()
.setColor(red)
.setName("Fred")
.setSize(42)
.build();
Итак, я знаю, что для вызова именованных параметров при вызове метода существует следующее "Builder". Хотя, похоже, это работает только с внутренними статическими классами в качестве строителя или я ошибаюсь? Я взглянул на некоторые уроки для шаблона построения, но они кажутся очень сложными для того, что я пытаюсь сделать. Есть ли способ сохранить класс Foo и класс Builder отдельно, имея преимущество названных параметров, таких как код выше?
Ниже стандартной настройки:
public class Foo {
public static class Builder {
public Foo build() {
return new Foo(this);
}
public Builder setSize(int size) {
this.size = size;
return this;
}
public Builder setColor(Color color) {
this.color = color;
return this;
}
public Builder setName(String name) {
this.name = name;
return this;
}
// you can set defaults for these here
private int size;
private Color color;
private String name;
}
public static Builder builder() {
return new Builder();
}
private Foo(Builder builder) {
size = builder.size;
color = builder.color;
name = builder.name;
}
private final int size;
private final Color color;
private final String name;
}