建造者模式实现肯德基“套餐”类。分析:肯德基店有汉堡、可乐、薯条、炸鸡翅等产品,用户可以随意组合它们,生成出不同的“套餐”,所以适合使用建造者模式实现
时间: 2024-10-25 20:10:11 浏览: 20
java设计模式【之】建造者模式【源码】【场景:车辆组装】
建造者模式是一种常用的软件设计模式,它将复杂产品的构建过程分解为一系列简单的步骤,使得你可以一步步地添加产品组件,而无需暴露每个组件的内部结构。在这个场景下,我们可以为肯德基套餐创建一个建造者类。
首先,定义一个`Product`接口,表示肯德基的基本产品:
```java
interface Product {
String getName();
}
```
然后为每个单品(如汉堡、可乐等)创建具体的实现类:
```java
class Hamburger implements Product {
private String name;
// 构造方法、getter和setter...
@Override
public String getName() {
return name;
}
}
// 类似地,还有其他产品类,如:
class Coke, Fries, ChickenWings...
```
接着,创建一个`Builder`类,也就是建造者类,用于组合这些产品构成套餐:
```java
class KFCMealBuilder {
private List<Product> products;
public KFCMealBuilder() {
products = new ArrayList<>();
}
public KFCMealBuilder addHamburger(Hamburger hamburger) {
products.add(hamburger);
return this;
}
public KFCMealBuilder addCoke(Coke coke) {
products.add(coke);
return this;
}
// 添加其他单品的方法...
public KFCMeal build() {
// 校验并返回套餐实例,例如KFCMeal
return new KFCMeal(products);
}
}
```
最后,`KFCMeal`类代表套餐,包含了所有单品:
```java
class KFCMeal {
private List<Product> products;
public KFCMeal(List<Product> products) {
this.products = products;
}
// 获取包含的所有单品...
}
```
这样,用户就可以通过`KFCMealBuilder`的链式调用来创建自定义的肯德基套餐,无需直接操作内部细节。
阅读全文