首先是 Coffee
类,这是一个抽象类,表示咖啡的基本属性和方法。然后是 LatteCoffee
类,它继承自 Coffee
类,表示一种具体的咖啡类型——拿铁咖啡。在 LatteCoffee
类中,实现了 create()
方法,用于描述拿铁咖啡的制作过程。
接着是 CoffeeFactory
类,这是一个工厂类,用于生产咖啡。在 createCoffee()
方法中,它创建了一个拿铁咖啡的实例并返回。
然后是 CoffeeStore
类,代表咖啡店。在 creatCoffee()
方法中,它也创建了一个拿铁咖啡的实例并返回。
最后是 Client
类,这是客户端程序。它创建了一个咖啡工厂和一个咖啡店的实例,并选择购买一杯拿铁咖啡。然后输出了拿铁咖啡的属性,并调用了 create()
方法来制作拿铁咖啡。
package com.edu.manager;
// 咖啡抽象类
abstract class Coffee {
private String name;
private int sugar;
private double milk;
private double price;
// 构造方法
public Coffee(String name, int sugar, double milk, double price) {
this.name = name;
this.sugar = sugar;
this.milk = milk;
this.price = price;
}
// 获取咖啡名称
public String getName() {
return name;
}
// 获取糖的数量
public int getSugar() {
return sugar;
}
// 获取牛奶的数量
public double getMilk() {
return milk;
}
// 获取咖啡价格
public double getPrice() {
return price;
}
// 制作咖啡的抽象方法,具体制作过程由子类实现
public abstract void create();
}
// 拿铁咖啡类,继承自Coffee类
public class LatteCoffee extends Coffee {
public LatteCoffee() {
super("美式拿铁", 4, 50, 15); // 调用父类构造方法
}
// 实现制作咖啡的方法
@Override
public void create() {
System.out.println("Brewing coffee"); // 制作拿铁咖啡的具体步骤
}
}
// 咖啡工厂类
public class CoffeeFactory {
// 创建咖啡的方法
public Coffee createCoffee() {
return new LatteCoffee(); // 创建拿铁咖啡的实例并返回
}
}
// 咖啡店类
public class CoffeeStore {
// 创建咖啡的方法
public Coffee creatCoffee() {
return new LatteCoffee(); // 创建拿铁咖啡的实例并返回
}
}
// 客户端程序
public class Client {
public static void main(String[] args) {
CoffeeFactory coffeeFactory = new CoffeeFactory(); // 创建一个咖啡工厂实例
CoffeeStore coffeeStore = new CoffeeStore(); // 创建一个咖啡店实例
Coffee Latte = new LatteCoffee(); // 选购一杯拿铁咖啡
// 输出拿铁咖啡的属性
System.out.println("order a " + Latte.getName() + "\nsugar:" + Latte.getSugar() + "\nmilk:" + Latte.getMilk() + "\nprice:" + Latte.getPrice());
Latte.create(); // 制作拿铁咖啡
}
}
运行结果为:
oder a 美式拿铁
sugar:4
milk:50.0
price:15.0
Brewing coffee
Process finished with exit code 0