1. 程式人生 > >設計模式——橋接模式

設計模式——橋接模式

題目:咖啡店可以提供大杯(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

在這裡插入圖片描述