解釋:
將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不用的表示。
結構圖:
優點:
可以將乙個產品的內部表象與產品的生成過程分割開來,從而可以使乙個建造過程生成具有不同的內部表象的產品物件。
使得建造**與表示**分離,由於建造者隱藏了該產品是如何組裝的,所以如需要改變乙個產品的內部,只需要再定義乙個具體的建造者就可以了。
如果使用了建造者模式,使用者就只需指定需要建造的型別就可以得到它們,而具體建造過程、細節就不需要知道了。
使用環境:
主要用於建立一些複雜的物件,這些物件內部構建間的建造順序通常是穩定的,但物件內部的構建通常面臨著複雜的變化。
當建立複雜物件的演算法應該獨立於該物件的組成部分以及他們的裝配方式時適用的模式。
使用建議:
對於builder類的細化,需要權衡。如果這些細節是每個具體的子類都需要構建的,那就應該加進去。反之,則沒有必要。
其實構建模式是逐步構造產品的,所以建造者的builder類裡的那些建造方法必須要足夠普遍,以便為各種型別的具體建造者構造。
示例:
抽象builder類:構建的部件,防止任何子類遺忘。
指揮者類:控制構建過程。用來隔離使用者與建造過程的關聯。
客戶端:
擴充套件:
1.依賴倒轉原則:抽象不應該依賴細節,細節應該依賴於抽象。
建造者模式(生成器模式)
1.將複雜的物件的構建與其表示分離,使同樣的構建過程可以有不同的表示 如下 父類抽象,採用模板方法模式,定義一系列演算法,抽象,定義一模板,由sequence 動態決定演算法是否執行 子類將繼承該類並實現3個演算法 abstract class design mode builder pattern...
生成器(建造者)模式
意圖 將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。情景 生產不同規格的電腦。規格一,規格二 關鍵點 product 具體產品 表示被構造的複雜物件。builder 抽象構建產品 為建立乙個產品物件的各種部件指定抽象介面。builderimpl 抽象構建的具體實現 實現b...
生成器模式(建造者模式 Builder)
設計模式系列 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。為建立乙個product物件的各個部件指定抽象介面 實現builder的介面以構造和裝配該產品的各個部件 定義並明確它所建立的表示 提供乙個檢索產品的介面 構造乙個可以使用builder介面的物件 表示被構造的複...