У меня возник вопрос относительно «Шаблон строителя», описанный в «Эффективной Java». Нужен ли нам .build()
метод для правильной реализации паттерна? Например, предположим, что у нас есть следующий класс:
public class CoffeeDrink {
private int numEspressoShots;
private short milkType;
private boolean withWhip;
private CoffeeDrink() {
}
public static CoffeeDrink buildNewDrink() {
return new CoffeeDrink();
}
public CoffeeDrink withEspresso(int n) {
this.numEspressoShots = n;
return this;
}
public CoffeeDrink withMilkType(shot t) {
this.milkType = t;
return this;
}
public CoffeeDrink withWhip() {
this.withWhip = true;
return this;
}
}
А потом как мы его используем:
CoffeeDrink c = CoffeeDrink.buildNewDrink()
.withEspresso(2)
.withMilkType(2)
.withWhip();
Будет ли это все еще действительным, если у меня нет статического внутреннего класса Builder
? Я предполагаю, что одно из преимуществ заключается в том, что он не создает новый объект CoffeeDrink
до тех пор, пока не будет вызван метод .build()
, но я все еще создаю объект Builder
. Просто ищу пояснений.