【設計模式】Java設計模式之建造者模式

目錄

一、爲什麼使用建造者模式

二、模式定義

三、模式結構

四、模式優點

五、模式缺點

六、適用環境


一、爲什麼使用建造者模式

建造者模式可以將部件和其組裝過程分開,一步一步創建一個複雜的對象。用戶只需要指定複雜對象的類型就可以得到該對象,而無須知道其內部的具體構造細節。

二、模式定義

建造者模式(Builder Pattern):將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示
建造者模式是一步一步創建一個複雜的對象,它允許用戶只通過指定複雜對象的類型和內容就可以構建它們,用戶不需要知道的具體構建細節。建造者模式屬於對象創建型模式。根據中文翻譯的不同,建造者模式又可以稱爲生成器模式。

三、模式結構

建造者模式包含如下角色:
Builder:抽象建造者
ConcreteBuilder:具體建造者
Director:指揮者(一方面它隔離了客戶與生產過程;另一方面它負責控制產品的生成過程
Product:產品角色

四、模式優點

在建造者模式中,客戶端不必知道產品內部組成的細節,將產品本身與產品的創建過程解耦,使得相同的創建過程可以創建不同的產品對象
每一個具體建造者都相對獨立,而與其他的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,用戶使用不同的具體建造者即可得到不同的產品對象
可以更加精細地控制產品的創建過程。將複雜產品的創建步驟分解在不同的方法中,使得創建過程更加清晰,也更方便使用程序來控制創建過程。
增加新的具體建造者無須修改原有類庫的代碼,指揮者類針對抽象建造者類編程,系統擴展方便,符合“開閉原則”。

五、模式缺點

建造者模式所創建的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,
因此其使用範圍受到一定的限制
如果產品的內部變化複雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得很龐大

六、適用環境

需要生成的產品對象有複雜的內部結構,這些產品對象通常包含多個成員屬性。
需要生成的產品對象的屬性相互依賴,需要指定其生成順序
對象的創建過程獨立於創建該對象的類。在建造者模式中引入了指揮者類,將創建過程封裝在指揮者類中,而不在建造者中。
隔離複雜對象的創建和使用,並使得相同的創建過程可以創建不同的產品
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章