[设计模式笔记]4.建造者模式
生活随笔
收集整理的這篇文章主要介紹了
[设计模式笔记]4.建造者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主要解決:在整個軟件系統中,面臨著一個復雜對象的創建工程,通常由各個部分的子對象用一定的算法構成,由于需求的變化,這個負載對象的各個部分面臨著劇烈的變化。
何時使用:一些基本部分不變,而組合經常變化時。
應用實例:餐館點餐,各個菜式的價格和內容不變,但是菜式的組合常常發生變化。
優點:1.建造者獨立,易擴展。2.便于控制細節風險
缺點:1.產品必須有共同點。2.如產品內部變化復雜,需要很多建造類。
應用場景:
1.????需要生產的對象具有復雜的內部結構
2.????需要生成的對象內部屬性本身相互依賴
與工廠模式的區別:建造者更注重內部對象的組合和裝配順序
創建一個表示事務條目和食物包裝的接口
Item.java Public interface Item{Public String name();Public Packing packing();Public float price(); } Packing.java Public interface Packing {Public String pack(); } Wrapper.java Public class Wrapper implements Packing{ @Override Public String pack() {Return “Wrapper”; } }Bottle.java Public class Bottle implement Packing{ @Override Public String pack() {Return “Bottle”; } }Burger.java Public abstract class Burger implements Item{ @Override Public Packing packing() {Return new Wrapper(); }@Override Public abstract float price(); }ColdDrink.java Public abstract class ColdDrink implements Item{ @Override Public Packing packing(){Return new Bottle(); }@Override Public abstract float price();}VegBurger.java Public class VegBurger extends Burger { @OverridePublic float price() {Return 24.5f; }@Override Public String name() {Return “VegBurger”; } }ChickenBurger.java Public class ChickenBurger extends Burger{……………… }Coke.java Public class Coke extends ColdDrink {@OverridePublic float price() {Return 1f; }@Override Public String name() {Return “Coke”; } }Pepsi.java Public class Pepsi extends ColdDrink {@OverridePublic float price() {…… }@Override Public String name() {…… } } Public class Meal {Private List<Item> items = new ArrayList<Item>();Public void addItem(Item item) {Items.add(item); }Public float getCost() {float cost = 0f;for (Item item:items) {cost = cost + item.getPrice(); } Return cost; }Public void showItems() {For(Item item:items){System.out.println(“Item :” + item.name());System.out.println(“Item pack by” + item.packing().pack());System.out.println(“Item cost” + item.getPrice()); } } }Public class MealBuilder{Public Meal prepareVegMeal {Meal meal = new Meal();meal.addItem(new VegBurger());meal.addItem(new Pepsi());return meal; }Public Meal prepareNonVegMeal(){Meal meal = new Meal();meal.addItem(new ChickenBurger());meal.addItem(new Coke());return meal; } } Public class BuilderPatternDemo {Public static void main(String[] args) {MealBuilder mealBuilder = new prepareVegMeal();Meal vegMeal = mealBuilder.prepareVegMeal();vegMeal.showItems();System.out.println(“Veg Meal cost:” + vegMeal.getCost());} }總結
以上是生活随笔為你收集整理的[设计模式笔记]4.建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精神病保险可以保吗
- 下一篇: 农村创业的好项目成本低 推荐一些潜