0

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

4

0 回答 0