软件设计师(2)-2012年上半年下午JAVA

题目如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码如下:

package 真题;

public class test_2012_low {
    public static void main(String[] args) {
        Beverage beverage = new DarkRoast();
        beverage = new Mocha(beverage);
        beverage = new Mocha(beverage);
        beverage = new Whip(beverage);
        beverage = new Whip(beverage);
        System.out.println(beverage.getDescription() + " ¥" + beverage.cost());
    }
}

abstract class Beverage { //饮料的抽象类
    String description = "Unknown Beverage";
    String getDescription(){ //获取对饮料的描述
        return description;
    }
    abstract int cost(); //抽象方法计算花费
}

abstract class CondimentDecorator extends Beverage { //配料的抽象类 继承饮料
    Beverage beverage;
}

class Espresso extends Beverage { //蒸馏咖啡
    private final int ESPRESSO_PRICE = 25; //定义蒸馏咖啡的价格
    public Espresso() { //有参构造为描述赋值
        description = "Espresso";
    }
    @Override
    public int cost() { //返回价格
        return ESPRESSO_PRICE;
    }
}

class DarkRoast extends Beverage { //深度烘培咖啡
    private final int DARKROAST_PRICE = 20; //定义深度烘焙咖啡价格
    public DarkRoast() {
        description = "DarkRoast";
    }
    @Override
    public int cost() {
        return DARKROAST_PRICE;
    }
}

class Mocha extends CondimentDecorator { //定义加入摩卡配料
    private final int MOCHA_PRICE = 10;

    public Mocha(Beverage beverage) {
        this.beverage = beverage;
    }

    @Override
    public String getDescription() {
        return beverage.getDescription() + ", Mocha";
    }

    @Override
    public int cost() {
        return MOCHA_PRICE + beverage.cost();
    } //摩卡继承配料类

}

class Whip extends CondimentDecorator { //定义加入奶泡配料
    private final int WHIP_PRICE = 8;

    public Whip(Beverage beverage) {
        this.beverage = beverage;
    }

    @Override
    public String getDescription() {
        return beverage.getDescription() + ", Whip";
    }

    @Override
    public int cost() {
        return WHIP_PRICE + beverage.cost();
    }
}

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值