意圖:將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。
情景:生產不同規格的電腦。規格一,規格二
關鍵點:
product(具體產品):表示被構造的複雜物件。
builder(抽象構建產品):為建立乙個產品物件的各種部件指定抽象介面。
builderimpl(抽象構建的具體實現):實現builder介面以構造和裝配該產品的各個部件,定義並明確它所建立的表示。
dircector(建造者):構造乙個使用builder介面的物件。
結構圖
**實現:
電腦實體類
package com.zlfan.builder;
public class computer
public void setmainboard(string mainboard)
public string getharddisk()
public void setharddisk(string harddisk)
public string getcpu()
public void setcpu(string cpu)
@override
public string tostring()
}
抽象構建產品(電腦)
package com.zlfan.builder;
//抽象生產
public inte***ce builder
抽象構建的具體實現 ,規格一的電腦
package com.zlfan.builder;
public class computerbuilder implements builder
@override
public void buildhd()
@override
public void buildcpu()
@override
public computer buildcopmuter()
}
建造者
package com.zlfan.builder;
//建造者
public class director
}
測試結果:
規格二電腦配置方案 技嘉,三星500g,amd4核,需要再寫乙個computerbuilder2類實現builder的介面,就可以在建造者中使用了(build)
優點:易於解耦,將產品本身與產品建立的過程j進行解耦,可以使用相同的建立過程來得到不同的產品。
易於精確控制物件的建立,將複雜產品的建立步驟分解在不同的方法中,使得建立過程更加清晰。
易於拓展,增加新的具體建造者無需原有類庫的**,易於拓展,符合開閉原則。
缺點:生成器(建造者)模式所建立的產品一般具有較多的共同點,其組成部分相似;如果產品只見差異過大,則不適合採用該模式,因此其使用範圍受到一定的限制。
如果產品內部變化複雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得龐大。
適用性:
建造者模式(生成器模式)
1.將複雜的物件的構建與其表示分離,使同樣的構建過程可以有不同的表示 如下 父類抽象,採用模板方法模式,定義一系列演算法,抽象,定義一模板,由sequence 動態決定演算法是否執行 子類將繼承該類並實現3個演算法 abstract class design mode builder pattern...
設計模式 建造者 生成器
生成器模式,也叫建造者模式。有人說後者是想強調該模式重點是強調建造過程,而不是生成。個人比較認同,所以後文也叫建造者模式。建造者模式,主要意圖是將物件的建造於他的表示分離。從而使得同樣的建造過程可以建造出不同的產品。參與者有建造者,導演和具體的產品。舉例說明,我們想生產電腦,電腦就是產品。宣告乙個類...
生成器模式(建造者模式 Builder)
設計模式系列 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。為建立乙個product物件的各個部件指定抽象介面 實現builder的介面以構造和裝配該產品的各個部件 定義並明確它所建立的表示 提供乙個檢索產品的介面 構造乙個可以使用builder介面的物件 表示被構造的複...