题目:咖啡店可以提供大杯(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();
}
}
运行结果: