[设计模式笔记]4.建造者模式
生活随笔
收集整理的這篇文章主要介紹了
[设计模式笔记]4.建造者模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主要解決:在整個(gè)軟件系統(tǒng)中,面臨著一個(gè)復(fù)雜對(duì)象的創(chuàng)建工程,通常由各個(gè)部分的子對(duì)象用一定的算法構(gòu)成,由于需求的變化,這個(gè)負(fù)載對(duì)象的各個(gè)部分面臨著劇烈的變化。
何時(shí)使用:一些基本部分不變,而組合經(jīng)常變化時(shí)。
應(yīng)用實(shí)例:餐館點(diǎn)餐,各個(gè)菜式的價(jià)格和內(nèi)容不變,但是菜式的組合常常發(fā)生變化。
優(yōu)點(diǎn):1.建造者獨(dú)立,易擴(kuò)展。2.便于控制細(xì)節(jié)風(fēng)險(xiǎn)
缺點(diǎn):1.產(chǎn)品必須有共同點(diǎn)。2.如產(chǎn)品內(nèi)部變化復(fù)雜,需要很多建造類。
應(yīng)用場(chǎng)景:
1.????需要生產(chǎn)的對(duì)象具有復(fù)雜的內(nèi)部結(jié)構(gòu)
2.????需要生成的對(duì)象內(nèi)部屬性本身相互依賴
與工廠模式的區(qū)別:建造者更注重內(nèi)部對(duì)象的組合和裝配順序
創(chuàng)建一個(gè)表示事務(wù)條目和食物包裝的接口
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());} }總結(jié)
以上是生活随笔為你收集整理的[设计模式笔记]4.建造者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精神病保险可以保吗
- 下一篇: 农村创业的好项目成本低 推荐一些潜