设计模式——桥接模式

题目:咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用java控制台应用程序实现该设计。

咖啡大小

package coffee;

public abstract class Size {
    public abstract  String coffeeSize();
}
class Jorum extends  Size{

    @Override
    public String coffeeSize() {
        return "JorumCoffee";
    }
}
class Medium extends Size {

    @Override
    public String coffeeSize() {
        return "MediumCoffee";

    }
}
class Small extends  Size{

    @Override
    public String coffeeSize() {
        return "SmallCoffee";
    }
}

加东西

package coffee;

public abstract class AddSomething {
    protected Size coffeeSize;
    public void setSize(Size coffeeSize){
        this.coffeeSize = coffeeSize;
    }
    public abstract void showCoffee();
}
class AddMilk extends AddSomething{

    @Override
    public void showCoffee() {
        System.out.println(coffeeSize.coffeeSize()+"add milk");
    }
}
class  AddSuger extends AddSomething{

    @Override
    public void showCoffee() {
        System.out.println(coffeeSize.coffeeSize()+"add suger");
    }
}
class AddLemon extends  AddSomething{

    @Override
    public void showCoffee() {
        System.out.println(coffeeSize.coffeeSize()+"add Lemon");
    }
}

测试

package coffee;

public class CoffeeDemo {
    public static void main(String[] args) {
        Jorum jorumcoffee = new Jorum();
        Medium mediumcoffee = new Medium();
        Small smallcoffee = new Small();
        //大杯咖啡加牛奶
        AddSomething addmilk = new AddMilk();
        addmilk.setSize(jorumcoffee);
        addmilk.showCoffee();
        //中杯咖啡加糖
        AddSomething addsuger = new AddSuger();
        addsuger.setSize(mediumcoffee);
        addsuger.showCoffee();
        //小杯咖啡加柠檬
        AddSomething addlemon = new AddLemon();
        addlemon.setSize(smallcoffee);
        addlemon.showCoffee();
        //小杯咖啡加糖加牛奶
        AddSomething addSomething = new AddMilk();
        addSomething.setSize(smallcoffee);
        addSomething.showCoffee();
        addSomething = new AddSuger();
        addSomething.setSize(smallcoffee);
        addSomething.showCoffee();
    }
}

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

uml

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值