假设我使用装饰设计模式来制作披萨。用户可以添加 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 检查每个条件?