第二條,遇到多個(gè)構(gòu)造器參數(shù)時(shí)要考慮用構(gòu)造器

如果類的構(gòu)造器或者靜態(tài)工廠中具有多個(gè)參數(shù),設(shè)計(jì)這種類時(shí),Builder模式就是種不錯(cuò)的選擇,特別是當(dāng)大多數(shù)參數(shù)都是可選的時(shí)候。Builder也有它的不足之處,為了創(chuàng)建對(duì)象必須先創(chuàng)建它的構(gòu)造器,在某些十分注重性能的情況下,可能會(huì)有增大開銷的問題。

/**
 * 構(gòu)造器模式,應(yīng)對(duì)可變參數(shù)
 * Created by luoluo on 2017/12/19.
 */
public class Coffee {
    private String coffeeBean;
    private String water;
    private String suger;
    private String milk;
    private String fruit;
    private String cream;

    public static class Bulider {
        private String coffeeBean;
        private String water;
        private String suger;
        private String milk;
        private String fruit;
        private String cream;

        public Bulider(String coffeeBean, String water) {
            this.coffeeBean = coffeeBean;
            this.water = water;
        }

        public Bulider suger(String suger) {
            this.suger = suger;
            return this;
        }

        public Bulider milk(String milk) {
            this.milk = milk;
            return this;
        }

        public Bulider fruit(String milk) {
            this.fruit = fruit;
            return this;
        }

        public Bulider cream(String cream) {
            this.cream = cream;
            return this;
        }

        public Coffee build() {
            return new Coffee(this);
        }
    }

    private Coffee(Bulider build) {
        this.coffeeBean = build.coffeeBean;
        this.water = build.water;
        this.suger = build.suger;
        this.milk = build.milk;
        this.fruit = build.fruit;
        this.cream = build.cream;
    }

}
public class CoffeeBuilerDemo {
    public static void main(String[] args) {
        Coffee coffee = new Coffee.Bulider("咖啡豆", "水").milk("牛奶")
                .cream("奶油").suger("糖").build();

    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容