作者 薛之謙qxl? 轉(zhuǎn)載請注明出處
我的知乎原文:https://zhuanlan.zhihu.com/p/125618839
內(nèi)容簡介:
建造者模式(Builder)
定義:
建造者模式:將一個復(fù)雜的對象的構(gòu)建與它的表示分離衬浑,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示切揭。
實用范圍:
1券时、當(dāng)創(chuàng)建復(fù)雜對象的算法應(yīng)該獨立于該對象的組成部分以及它們的裝配方式時。
2束昵、當(dāng)構(gòu)造過程必須允許被構(gòu)造的對象有不同表示時吼野。
在《Effective Java》書中第二條,就提到“遇到多個構(gòu)造器參數(shù)時要考慮用構(gòu)建器”诡宗,其實這里的構(gòu)建器就屬于建造者模式滔蝉,只是里面把四個角色都放到具體產(chǎn)品里面了。
我們看一下代碼:
一個Sender接口:
兩個實現(xiàn)類MailSender和SmsSender:
建造者類如下:
測試類:
從這點看出塔沃,建造者模式將很多功能集成到一個類里蝠引,這個類可以創(chuàng)造出比較復(fù)雜的東西。所以與工程模式的區(qū)別就是:工廠模式關(guān)注的是創(chuàng)建單個產(chǎn)品蛀柴,而建造者模式則關(guān)注創(chuàng)建符合對象螃概,多個部分。因此鸽疾,是選擇工廠模式還是建造者模式吊洼,依實際情況而定。