模式:建造者模式

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

代码示例:

定义一个饮料类和一个建造者接口:

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();
}

定义一个具体的建造者,实现建造者接口:

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;
    }
}

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

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();
    }
}

输出结果:

Drink: Milk Tea
Toppings: 
- Milk
- Milk
- Red Bean
``
假如顾客在点饮料时可能需要加料比如:牛奶、红豆等。这些配料也可以放多份。选择合适的设计模式并说出理由。请给出相应模式和理由并给出相应代码

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

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