模拟肯德基点餐系统
// 食物基类
public abstract class AbstractBaseFood
{
protected String kind; // 类别
protected int num; // 数量
protected float price; // 价格
public float totalPrice()// 合计
{
return this.num * this.price;
}
}
// 抽象食物接口
public interface IFood
{
//打印输出食物信息
void printMesage();
}
// 汉堡基类
public abstract class Hamburg extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "风味汉堡,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
}
}
// 鸡翅基类
public abstract class ChickenWings extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "风味鸡翅,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
}
}
//薯条基类
public abstract class FrenchFries extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "风味薯条,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
}
}
//饮料基类
public abstract class Beverage extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "饮料,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
}
}
//创建具体食物
//中国风味的麻辣鸡腿汉堡
public class ChinaHanburm extends Hamburg
{
public ChinaHanburm(int num)
{
this.kind = "麻辣";
this.price = 14.0f;
this.num = num;
}
}
// 鸡翅实现类
public class ChinaChickenWings extends ChickenWings
{
public ChinaChickenWings(int num)
{
this.kind = "奥尔良";
this.price = 2.5f;
this.num = num;
}
}
//薯条实现类
public class ChinaFrenchFries extends FrenchFries
{
public ChinaFrenchFries(int num)
{
this.kind = "普通";
this.price = 8.0f;
this.num = num;
}
}
//饮料实现类
public class ChinaBeverage extends Beverage
{
public ChinaBeverage(int num)
{
this.kind = "可乐";
this.price = 7.0f;
this.num = num;
}
}
// 创建肯德基抽象工厂基类
public interface IKfcFactory
{
// 生产汉堡
public Hamburg createHamburg(int num);
// 生产薯条
public FrenchFries createFrenchFries(int num);
// 生产鸡翅
public ChickenWings createChickenWings(int num);
// 生产饮料
public Beverage createBeverage(int num);
}
//创建具体工厂
public class ChinaKfcFactory implements IKfcFactory
{
// 生产可乐
public Beverage createBeverage(int num)
{
return new ChinaBeverage(num);
}
// 生产奥尔良烤鸡翅
public ChickenWings createChickenWings(int num)
{
return new ChinaChickenWings(num);
}
// 生产薯条
public FrenchFries createFrenchFries(int num)
{
return new ChinaFrenchFries(num);
}
// 生产麻辣风味鸡腿汉堡
public Hamburg createHamburg(int num)
{
return new ChinaHanburm(num);
}
}
//创建客户类
public class Customer
{
// 抽象工厂
private IKfcFactory kfcFactory;
// 构造方法将抽象工厂作为参数传入
public Customer(IKfcFactory kfcFactory)
{
this.kfcFactory = kfcFactory;
}
//订购食物
// 订购麻辣鸡腿汉堡
public float orderHamburg(int num)
{
// 获得麻辣鸡腿汉堡
Hamburg hamburg = kfcFactory.createHamburg(num);
// 输出订购信息
hamburg.printMesage();
// 返回总价
return hamburg.totalPrice();
}
// 订购奥尔良烤鸡翅
public float orderChickenWings(int num)
{
// 获得奥尔良烤鸡翅
ChickenWings chickenWings = kfcFactory.createChickenWings(num);
// 输出订购信息
chickenWings.printMesage();
// 返回总价
return chickenWings.totalPrice();
}
// 订购薯条
public float orderFrenchFries(int num)
{
// 获得薯条
FrenchFries frenchFries = kfcFactory.createFrenchFries(num);
// 输出订购信息
frenchFries.printMesage();
// 返回总价
return frenchFries.totalPrice();
}
// 订购可乐
public float orderBeverage(int num)
{
// 获得可乐
Beverage beverage = kfcFactory.createBeverage(num);
// 输出订购信息
beverage.printMesage();
// 返回总价
return beverage.totalPrice();
}
}
public class MainApp
{
public static void main(String[] args)
{
IKfcFactory kfcFactory = new ChinaKfcFactory();
Customer customer = new Customer(kfcFactory);
// 一个麻辣鸡腿汉堡
float hamhurgMoney = customer.orderHamburg(1);
// 四个奥尔良烤鸡翅
float chickenWingsMoney = customer.orderChickenWings(4);
// 一包薯条
float frenchFriesMoney = customer.orderFrenchFries(1);
// 两杯可乐
float beverageMoney = customer.orderBeverage(2);
System.out.println("总计:" + (hamhurgMoney + chickenWingsMoney + frenchFriesMoney + beverageMoney));
}
}