假如顾客在点饮料时可能需要加料比如:牛奶、红豆等。这些配料也可以放多份。选择合适的设计模式并说出理由。请给出相应模式和理由并给出相应代码
模式:建造者模式
理由:建造者模式适用于创建复杂对象,可以通过一步一步的构建来创建对象,同时可以灵活地添加或删除配料,满足顾客的个性化需求。
代码示例:
定义一个饮料类和一个建造者接口:
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 著作权归作者所有。请勿转载和采集!