定義:通過封裝對象的創(chuàng)建過程將對象的創(chuàng)建與使用分離開來镣丑。便于類的解耦盒让,但同時帶來的多余的builder對象蹬挺,對象的修改也要修改builder類聂示。
建造者模式對象結(jié)構(gòu)
- Director:調(diào)用具體建造者來創(chuàng)建復(fù)雜對象的各個部分,在指導(dǎo)者中不涉及具體產(chǎn)品的信息棺弊,只負(fù)責(zé)保證對象各部分完整創(chuàng)建或按某種順序創(chuàng)建晶密。
- Builder:給出一個抽象接口,以規(guī)范產(chǎn)品對象的各個組成成分的建造模她。這個接口規(guī)定要實(shí)現(xiàn)復(fù)雜對象的哪些部分的創(chuàng)建稻艰,并不涉及具體的對象部件的創(chuàng)建。
- ConcreteBuilder:實(shí)現(xiàn)Builder接口侈净,針對不同的商業(yè)邏輯尊勿,具體化復(fù)雜對象的各部分的創(chuàng)建。 在建造過程完成后畜侦,提供產(chǎn)品的實(shí)例元扔。
- Product:要創(chuàng)建的復(fù)雜對象。
建造者模式與工廠模式區(qū)別
- 工廠模式只負(fù)責(zé)對象的創(chuàng)建旋膳,不關(guān)注創(chuàng)建過程
- 建造者模式控制對象屬性的創(chuàng)建或創(chuàng)建順序
- 工廠模式創(chuàng)建的對象都一樣澎语,建造者模式通過創(chuàng)建過程可能創(chuàng)建不一樣的對象
常見的使用builder模式的實(shí)現(xiàn):
- Mybatis中配置解析過程
XMLConfigBuilder
- OkHttp中
Request
對象建造者模式 - GsonBuilder建造者模式
- 其他流行框架