建造者模式在饮料定制中的应用:满足个性化加料需求

顾客在点饮料时,可能需要加料,比如:牛奶、红豆等。这些配料也可以放多份。选择合适的建造者模式,可以有效地解决这个问题。

为什么选择建造者模式?

建造者模式适用于创建复杂对象,可以通过一步一步的构建来创建对象,同时可以灵活地添加或删除配料,满足顾客的个性化需求。

代码示例

1. 定义饮料类和建造者接口

public class Drink {
    private String name;
    private List<String> toppings;

    public Drink(String name) {
        this.name = name;
        toppings = new ArrayList<>();
    }

    public void addTopping(String topping) {
        toppings.add(topping);
    }

    public void show() {
        System.out.println('Drink: ' + name);
        System.out.println('Toppings: ');
        for (String topping : toppings) {
            System.out.println('- ' + topping);
        }
    }
}

public interface DrinkBuilder {
    void addMilk(int count);
    void addRedBean(int count);
    Drink getResult();
}

2. 定义具体的建造者,实现建造者接口

public class MilkTeaBuilder implements DrinkBuilder {
    private Drink drink;

    public MilkTeaBuilder() {
        drink = new Drink('Milk Tea');
    }

    @Override
    public void addMilk(int count) {
        for (int i = 0; i < count; i++) {
            drink.addTopping('Milk');
        }
    }

    @Override
    public void addRedBean(int count) {
        for (int i = 0; i < count; i++) {
            drink.addTopping('Red Bean');
        }
    }

    @Override
    public Drink getResult() {
        return drink;
    }
}

3. 客户端使用建造者创建饮料对象

public class Client {
    public static void main(String[] args) {
        DrinkBuilder builder = new MilkTeaBuilder();
        builder.addMilk(2);
        builder.addRedBean(1);
        Drink drink = builder.getResult();
        drink.show();
    }
}

4. 输出结果

Drink: Milk Tea
Toppings: 
- Milk
- Milk
- Red Bean

通过以上代码示例,我们可以看到建造者模式是如何简化饮料定制过程的,它让顾客可以轻松地添加各种配料,并且代码结构清晰易懂。


原文地址: https://www.cveoy.top/t/topic/nRno 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录