生成器(建造者)模式

2021-09-22 03:12:53 字數 2132 閱讀 2084

意圖:將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。 

情景:生產不同規格的電腦。規格一,規格二 

關鍵點:

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介面的物件 表示被構造的複...