JAVA咖啡店(抽象类版)

本文介绍了如何使用Java设计一个咖啡订购系统,通过抽象类Coffee定义制作咖啡的通用方法,然后创建拿铁和冰美式两种具体咖啡类,以及咖啡工厂和咖啡店类,实现客户在咖啡店下单后根据订单制作个性化咖啡的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景模拟:一位客户在咖啡店买咖啡,已知咖啡店的咖啡由一家工厂供货,现要求让客户在咖啡店下单后能马上得到一杯咖啡。

1.创建一个抽象类coffee,在其中定义制作咖啡的抽象方法makeCoffee,返回类型为String类型

还分别定义了加糖、加奶、加冰、加热这四种方法,供客户选择

public abstract class Coffee {

    public abstract String makeCoffee();

    public void addSugar() {
        System.out.println("加糖");
    }

    public void addMilk() {
        System.out.println("加奶");
    }
    
    public void addIce(){
        System.out.println("加冰");
    }

    public void addWarm(){
        System.out.println("加热");
    }
}

2.创建拿铁咖啡类

重写制作方法makeCoffee

//子类latteCoffee继承父类Coffee
public class latteCoffee extends Coffee{
    @Override
    public String makeCoffee() {
        return "一杯拿铁制作完成";
    }
}

3.创建冰美式类

继续重写制作方法makeCoffee

//子类icedAmerican继承父类Coffee
public class icedAmerican extends Coffee{
    @Override
    public String makeCoffee() {
        return "一杯冰美式制作完成";
    }
}

4.创建咖啡工厂类CoffeeFactory

public class CoffeeFactory {
    public CoffeeFactory(){
    
    }

//定义返回值为Coffee类型的生成咖啡的方法produceCoffee,其中参数是咖啡名,参数类型是String
    public coffee produceCoffee(String coffeeName){
//假设在收到咖啡店的订单之前,咖啡工厂还没有生产咖啡
        Coffee coffee = null;
//这里只考虑客户的订单是拿铁或者冰美式的情况
//如果收到的订单是拿铁,那就生产一杯新的拿铁咖啡
        if("latteCoffee".equals(coffeeName)){
            coffee = new latteCoffee();
//同理,如果收到的订单是冰美式,就生产一杯新的冰美式
        }else if("icedAmerican".equals(coffeeName)){
            coffee = new icedAmerican();
        }
//注意:完成咖啡店的订单后,要将咖啡返回给咖啡店
        return coffee;
    }
}

5.创建咖啡店类CoffeeStore

public class CoffeeStore {
//这里有两个参数,一个是类型为String的coffeeName,一个是类型为CoffeeFactory的coffeeFactory
    public coffee orderCoffee(String coffeeName, CoffeeFactory coffeeFactory){
//通过调用coffeeFactory对象的produceCoffee方法并传入一个具体的订单上的咖啡名,来动态地创建并初始化一个与该名称对应的Coffee类对象coffee,并将值赋值给变量coffee
//通过咖啡工厂生产客户订下的咖啡
        Coffee coffee = CoffeeFactory.produceCoffee(coffeeName);
//将做好的咖啡返回给客户
        return coffee;
    }
}

6.创建一个客户类

public class Client {
    public static void main(String[] args) {
//客户无需知道咖啡的制作过程,只需在咖啡店里下单即可
//创建一家新的咖啡店
        CoffeeStore coffeeStore = new CoffeeStore();
//客户下单一杯拿铁
//咖啡由一家新的工厂制作
//咖啡店从工厂拿货给客户
        Coffee coffee = coffeeStore.orderCoffee("latteCoffee", new CoffeeFactory());
//要求:加奶、加糖、加冰
        coffee.addMilk();
        coffee.addSugar();
        coffee.addIce();
        System.out.println(coffee.makeCoffee());
    }
}

7.运行一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值