一个奶茶店可以提供大杯(JorumTea)、中杯(MediumTea)、小杯(SmallTea)的奶茶(Tea),为了满足不同客户的口味,在奶茶中可以添加小料(Widget),糖(Sugar),或者珍珠(Tapioca),或者芋圆(Taroball),提供给客户不同口味的组合,如大杯奶茶加糖,中杯奶茶加珍珠,小杯奶茶加糖等。 请应用桥接模式,用JAVA控制台应用程序实现该设计。 要求输出:大杯奶茶加芋圆,中杯奶茶加糖,小杯奶茶加珍珠
时间: 2024-01-18 14:03:03 浏览: 148
以下是使用桥接模式实现的JAVA代码:
```
// 抽象化角色 Teatype
interface Teatype {
void addWidget(Widget widget);
void addSugar(Sugar sugar);
void addTopping(Topping topping);
void makeTea();
}
// 具体抽象化角色 JorumTea
class JorumTea implements Teatype {
private Widget widget;
private Sugar sugar;
private Topping topping;
public void addWidget(Widget widget) {
this.widget = widget;
}
public void addSugar(Sugar sugar) {
this.sugar = sugar;
}
public void addTopping(Topping topping) {
this.topping = topping;
}
public void makeTea() {
System.out.println("大杯奶茶加" + topping.getName());
}
}
// 具体抽象化角色 MediumTea
class MediumTea implements Teatype {
private Widget widget;
private Sugar sugar;
private Topping topping;
public void addWidget(Widget widget) {
this.widget = widget;
}
public void addSugar(Sugar sugar) {
this.sugar = sugar;
}
public void addTopping(Topping topping) {
this.topping = topping;
}
public void makeTea() {
System.out.println("中杯奶茶加" + sugar.getName());
}
}
// 具体抽象化角色 SmallTea
class SmallTea implements Teatype {
private Widget widget;
private Sugar sugar;
private Topping topping;
public void addWidget(Widget widget) {
this.widget = widget;
}
public void addSugar(Sugar sugar) {
this.sugar = sugar;
}
public void addTopping(Topping topping) {
this.topping = topping;
}
public void makeTea() {
System.out.println("小杯奶茶加" + topping.getName());
}
}
// 实现化角色 Widget
interface Widget {
String getName();
}
// 具体实现化角色 Tapioca
class Tapioca implements Widget {
public String getName() {
return "芋圆";
}
}
// 具体实现化角色 Taroball
class Taroball implements Widget {
public String getName() {
return "珍珠";
}
}
// 实现化角色 Sugar
interface Sugar {
String getName();
}
// 具体实现化角色 Sugar
class BrownSugar implements Sugar {
public String getName() {
return "糖";
}
}
// 实现化角色 Topping
interface Topping {
String getName();
}
// 具体实现化角色 Topping
class Honey implements Topping {
public String getName() {
return "蜂蜜";
}
}
public class BridgePatternDemo {
public static void main(String[] args) {
Teatype jorumTea = new JorumTea();
jorumTea.addWidget(new Tapioca());
jorumTea.makeTea();
Teatype mediumTea = new MediumTea();
mediumTea.addSugar(new BrownSugar());
mediumTea.makeTea();
Teatype smallTea = new SmallTea();
smallTea.addTopping(new Taroball());
smallTea.makeTea();
}
}
```
输出结果:
```
大杯奶茶加芋圆
中杯奶茶加糖
小杯奶茶加珍珠
```
阅读全文