实验六 桥接模式的应用(Java实现)
一、实验目的
(1) 掌握桥接模式(Bridge)的特点
(2) 分析具体问题,使用桥接模式进行设计。
二、实验内容和要求
一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用C#或Java、C++控制台应用程序实现该设计。绘制该模式的UML图。
三、源代码
1.Additives接口
interface Additives{
public void add();
}
2.Coffee接口
interface Coffee{
public void add(Additives additives);
public void drink();
}
3.Milk 类
class Milk implements Additives{
@Override
public void add() {
System.out.println("牛奶");
}
}
4.Sugar 类
class Sugar implements Additives{
@Override
public void add() {
System.out.println("糖");
}
}
5.Lemon 类
class Lemon implements Additives{
@Override
public void add() {
System.out.println("柠檬");
}
}
6.smallCoffee 类
class smallCoffee implements Coffee{
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("小咖啡");
}
}
7.mediumCoffee 类
class mediumCoffee implements Coffee{
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("中咖啡");
}
}
8.bigCoffee 类
class bigCoffee implements Coffee{
private Additives additives;
@Override
public void add(Additives additives) {
this.additives=additives;
}
@Override
public void drink() {
additives.add();
System.out.println("大咖啡");
}
}
9.测试类
public class Test {
public static void main(String[] args){
Milk milk = new Milk();
Sugar sugar = new Sugar();
Lemon lemon = new Lemon();
smallCoffee small = new smallCoffee();
mediumCoffee medium = new mediumCoffee();
bigCoffee big = new bigCoffee();
milk.add();
sugar.add();
lemon.add();
small.add(sugar);
medium.add(lemon);
big.add(milk);
small.drink();
medium.drink();
big.drink();
}
}