第104章

小A:“那應該如何使用生成器模式?”

大B:“首先假設一個複雜對象是由多個部件組成的,Builder模式是把複雜對象的創建和部件的創建分別開來,分別用Builder類和Director類來表示。”

首先,需要一個接口,它定義如何創建複雜對象的各個部件:

publicinterfaceBuilder{

//創建部件A比如創建汽車車輪

voidbuildPartA();

//創建部件B比如創建汽車方向盤

voidbuildPartB();

//創建部件C比如創建汽車發動機

voidbuildPartC();

//返回最後組裝成品結果(返回最後裝配好的汽車)

//成品的組裝過程不在這裡進行,而是轉移到下面的Director類中進行。

//從而實現瞭解耦過程和部件

ProductgetResult();

}

用Director構建最後的複雜對象,而在上面Builder接口中封裝的是如何創建一個個部件(複雜對象是由這些部件組成的),也就是說Director的內容是如何將部件最後組裝成成品:

publicclassDirector{

privateBuilderbuilder;

publicDirector(Builderbuilder){

this.builder=builder;

}

//將部件partApartBpartC最後組成複雜對象

//這裡是將車輪方向盤和發動機組裝成汽車的過程

publicvoidconstruct(){

builder.buildPartA();

builder.buildPartB();

builder.buildPartC();

}

}

Builder的具體實現ConcreteBuilder,通過具體完成接口Builder來構建或裝配產品的部件,定義並明確它所要創建的是什麼具體東西,提供一個可以重新獲取產品的接口。

publicclassConcreteBuilderimplementsBuilder{

PartpartA,partB,partC;

publicvoidbuildPartA(){

//這裡是具體如何構建partA的代碼

};

publicvoidbuildPartB(){

//這裡是具體如何構建partB的代碼

};

publicvoidbuildPartC(){

//這裡是具體如何構建partB的代碼

};publicProductgetResult(){

//返回最後組裝成品結果

};

}

複雜對象:產品Product:

publicinterfaceProduct{}

複雜對象的部件:

publicinterfacePart{}

我們看看如何調用Builder模式:

ConcreteBuilderbuilder=newConcreteBuilder();

Directordirector=newDirector(builder);

director.construct();

Productproduct=builder.getResult();

第204章第38章第101章第75章第178章第146章第111章第170章第24章第30章第114章第74章第181章第87章第53章第30章第198章第49章第38章第149章第41章第217章第79章第183章第91章第171章第205章第165章第135章第188章第173章第151章第130章第65章第193章第176章第59章第185章第91章第40章第210章第98章第81章第187章第85章第27章第66章第85章第144章第227章第95章第55章第53章第109章第86章第100章第218章第187章第28章第176章第15章第88章第213章第149章第57章第86章第224章第187章第13章第42章第29章第213章第103章第65章第83章第200章第43章第114章第73章第47章第89章第220章第211章第109章第126章第45章第122章第183章第50章第76章第78章第160章第33章第166章第149章第47章第227章第183章第158章
第204章第38章第101章第75章第178章第146章第111章第170章第24章第30章第114章第74章第181章第87章第53章第30章第198章第49章第38章第149章第41章第217章第79章第183章第91章第171章第205章第165章第135章第188章第173章第151章第130章第65章第193章第176章第59章第185章第91章第40章第210章第98章第81章第187章第85章第27章第66章第85章第144章第227章第95章第55章第53章第109章第86章第100章第218章第187章第28章第176章第15章第88章第213章第149章第57章第86章第224章第187章第13章第42章第29章第213章第103章第65章第83章第200章第43章第114章第73章第47章第89章第220章第211章第109章第126章第45章第122章第183章第50章第76章第78章第160章第33章第166章第149章第47章第227章第183章第158章