Рассмотрим следующий продукт и AbstractBuilder из Википедии:
/** "Product" */
class Pizza {
private String dough = "";
private String sauce = "";
private String topping = "";
public void setDough(String dough) {
this.dough = dough;
}
public void setSauce(String sauce) {
this.sauce = sauce;
}
public void setTopping(String topping) {
this.topping = topping;
}
}
/** "Abstract Builder" */
abstract class PizzaBuilder {
protected Pizza pizza;
public Pizza getPizza() {
return pizza;
}
public void createNewPizzaProduct() {
pizza = new Pizza();
}
public abstract void buildDough();
public abstract void buildSauce();
public abstract void buildTopping();
}
Если вы видите метод createNewPizzaProduct
в классе PizzaBuilder
.
Если бы Pizza реализовал интерфейс, скажем Foo
, и должен был реализовать метод bar
, как бы метод createNewPizzaProduct
объяснил это, поскольку было бы много различных типов Pizza
?
Что было бы наиболее элегантным решением, чтобы образец не нарушался? Эта модель является новой для меня.