設計模式——橋接模式
阿新 • • 發佈:2019-01-29
題目:咖啡店可以提供大杯(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(); } }
執行結果: