用java写一个建造者模式的咖啡店点餐系统
时间: 2023-09-06 16:05:14 浏览: 213
### 回答1:
好的,这是一份 Java 实现的咖啡店点餐系统的建造者模式代码:
```
// 咖啡店菜单项抽象类
abstract class Coffee {
String description;
String size;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public abstract double cost();
}
// 具体的咖啡菜单项
class Espresso extends Coffee {
public Espresso() {
this.description = "Espresso";
}
public double cost() {
return 1.99;
}
}
class Latte extends Coffee {
public Latte() {
this.description = "Latte";
}
public double cost() {
return 2.99;
}
}
// 建造者类
class CoffeeBuilder {
private Coffee coffee;
public CoffeeBuilder(String type) {
switch (type) {
case "Espresso":
coffee = new Espresso();
break;
case "Latte":
coffee = new Latte();
break;
}
}
public CoffeeBuilder size(String size) {
coffee.setSize(size);
return this;
}
public Coffee build() {
return coffee;
}
}
// 客户端代码
class Client {
public static void main(String[] args) {
Coffee coffee = new CoffeeBuilder("Espresso")
.size("Large")
.build();
System.out.println("Description: " + coffee.getDescription());
System.out.println("Size: " + coffee.getSize());
System.out.println("Cost: $" + coffee.cost());
}
}
```
在这段代码中,我们定义了一个咖啡店菜单项的抽象类 `Coffee`,它有两个属性:`description` 和 `size`。
我们还定义了两个具体的菜单项类:`Espresso` 和 `Latte`,分别继承自 `Coffee` 类。
在 `CoffeeBuilder` 类中,我们提供了一个方法 `size`,可以方便地
### 回答2:
咖啡店点餐系统的建造者模式可以通过以下步骤来实现:
1. 首先,创建一个咖啡类,该类包含咖啡的各种属性,例如名称、大小、甜度等。这些属性应该有对应的私有变量,并提供相应的getter和setter方法。
2. 创建一个咖啡建造者类,该类包含咖啡类中各个属性的设置方法。例如,可以有设置名称、设置大小、设置甜度等方法。这些方法应该返回建造者对象本身,以便可以链式调用。
3. 在咖啡建造者类中,还可以包含一个用于构建咖啡对象的build方法。该方法应该将建造者类中设置好的属性传递给咖啡类,并返回构建好的咖啡对象。
4. 在咖啡店点餐系统中,可以使用咖啡建造者类来构建咖啡对象。首先,创建一个咖啡建造者对象,然后使用该对象的各个设置方法来设置咖啡的属性,最后调用build方法来构建咖啡对象。
下面是一个基于建造者模式的咖啡店点餐系统的示例代码:
```java
// 咖啡类
class Coffee {
private String name;
private String size;
private String sweetness;
public void setName(String name) {
this.name = name;
}
public void setSize(String size) {
this.size = size;
}
public void setSweetness(String sweetness) {
this.sweetness = sweetness;
}
// 省略getter方法
}
// 咖啡建造者类
class CoffeeBuilder {
private Coffee coffee;
public CoffeeBuilder() {
coffee = new Coffee();
}
public CoffeeBuilder setName(String name) {
coffee.setName(name);
return this;
}
public CoffeeBuilder setSize(String size) {
coffee.setSize(size);
return this;
}
public CoffeeBuilder setSweetness(String sweetness) {
coffee.setSweetness(sweetness);
return this;
}
public Coffee build() {
return coffee;
}
}
// 咖啡店点餐系统
public class CoffeeShop {
public static void main(String[] args) {
Coffee coffee = new CoffeeBuilder()
.setName("拿铁")
.setSize("大杯")
.setSweetness("少糖")
.build();
// 输出咖啡的属性
System.out.println("名称:" + coffee.getName());
System.out.println("大小:" + coffee.getSize());
System.out.println("甜度:" + coffee.getSweetness());
}
}
```
以上代码中,使用咖啡建造者类来构建一个拿铁咖啡对象,并输出其属性。可以看到,通过建造者模式,可以更加灵活地构建咖啡对象,同时减少了构建过程中的重复代码。
### 回答3:
建造者模式是一种创建型设计模式,它将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
在咖啡店点餐系统中,我们可以使用建造者模式来构建菜单对象。具体实现如下:
首先,我们需要定义一个咖啡菜单类`CoffeeMenu`,该类包含以下属性:
- coffeeName:咖啡的名称
- coffeeType:咖啡的类型
- coffeeSize:咖啡的大小
- coffeePrice:咖啡的价格
然后,我们创建一个`CoffeeMenuBuilder`类,该类用于构建`CoffeeMenu`对象。
```
public class CoffeeMenuBuilder {
private String coffeeName;
private String coffeeType;
private String coffeeSize;
private double coffeePrice;
public CoffeeMenuBuilder setCoffeeName(String coffeeName) {
this.coffeeName = coffeeName;
return this;
}
public CoffeeMenuBuilder setCoffeeType(String coffeeType) {
this.coffeeType = coffeeType;
return this;
}
public CoffeeMenuBuilder setCoffeeSize(String coffeeSize) {
this.coffeeSize = coffeeSize;
return this;
}
public CoffeeMenuBuilder setCoffeePrice(double coffeePrice) {
this.coffeePrice = coffeePrice;
return this;
}
public CoffeeMenu build() {
return new CoffeeMenu(coffeeName, coffeeType, coffeeSize, coffeePrice);
}
}
```
接下来,我们可以使用`CoffeeMenuBuilder`来构建我们的咖啡菜单对象。
```
public class CoffeeShop {
public static void main(String[] args) {
CoffeeMenu coffeeMenu = new CoffeeMenuBuilder()
.setCoffeeName("拿铁")
.setCoffeeType("浓咖啡")
.setCoffeeSize("大杯")
.setCoffeePrice(20.0)
.build();
System.out.println("咖啡名称:" + coffeeMenu.getCoffeeName());
System.out.println("咖啡类型:" + coffeeMenu.getCoffeeType());
System.out.println("咖啡大小:" + coffeeMenu.getCoffeeSize());
System.out.println("咖啡价格:" + coffeeMenu.getCoffeePrice());
}
}
```
以上就是使用建造者模式构建咖啡店点餐系统的简单实现。在实际应用中,可以根据业务需求扩展属性和方法,以满足具体的功能要求。
阅读全文