Создавать различные декорированные объекты в случае ввода
Предположим, что я использовал узорчатый узор для приготовления пиццы. Есть 3 типа ингредиентов, в которые пользователь может добавить свою пиццу. Моцарелла, соус и овощи. Я подготовил эти занятия и установил стоимость.
Это основной код
public class PizzaFactory {
public static void main(String[] args) {
Pizza p = new TomatoSauce(new Mozarella(new PlainPizza()));
System.out.println(p.getIngredients());
}
}
Это интерфейс
public interface Pizza {
public String getIngredients();
public int getCost();
}
Это базовая пицца
public class PlainPizza implements Pizza{
@Override
public String getIngredients() {
return "Pizza ";
}
@Override
public int getCost() {
return 5;
}
}
Это класс декоратора
abstract class IngredientDecorator implements Pizza{
protected Pizza tempPizza;
public IngredientDecorator(Pizza newPizza) {
this.tempPizza = newPizza;
}
public String getIngredients() {
return tempPizza.getIngredients();
}
public int getCost() {
return tempPizza.getCost();
}
}
Один из классов ингредиентов -
public class Mozarella extends IngredientDecorator{
public Mozarella(Pizza newPizza) {
super(newPizza);
}
public String getIngredients() {
return tempPizza.getIngredients() + " Mozarella";
}
public int getCost() {
return tempPizza.getCost() + 1;
}
}
Другие похожи на них.
Теперь я хочу получить информацию от пользователя о том, какой ингредиент он хочет. Для ввода создам пиццу. Они могут захотеть просто пиццу. Но так как я создаю свою пиццу -> Pizza p = new TomatoSauce(new Mozarella(new PlainPizza())); нравится. Как сделать пиццу динамичной? Должен ли я проверять каждое условие с помощью if-else или switch-case?