天天看小說

第104章

小A:“那應(yīng)該如何使用生成器模式?”

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

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

publicinterfaceBuilder{

//創(chuàng)建部件A比如創(chuàng)建汽車車輪

voidbuildPartA();

//創(chuàng)建部件B比如創(chuàng)建汽車方向盤

voidbuildPartB();

//創(chuàng)建部件C比如創(chuàng)建汽車發(fā)動機

voidbuildPartC();

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

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

//從而實現(xiàn)瞭解耦過程和部件

ProductgetResult();

}

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

publicclassDirector{

privateBuilderbuilder;

publicDirector(Builderbuilder){

this.builder=builder;

}

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

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

publicvoidconstruct(){

builder.buildPartA();

builder.buildPartB();

builder.buildPartC();

}

}

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

publicclassConcreteBuilderimplementsBuilder{

PartpartA,partB,partC;

publicvoidbuildPartA(){

//這裡是具體如何構(gòu)建partA的代碼

};

publicvoidbuildPartB(){

//這裡是具體如何構(gòu)建partB的代碼

};

publicvoidbuildPartC(){

//這裡是具體如何構(gòu)建partB的代碼

};publicProductgetResult(){

//返回最後組裝成品結(jié)果

};

}

複雜對象:產(chǎn)品Product:

publicinterfaceProduct{}

複雜對象的部件:

publicinterfacePart{}

我們看看如何調(diào)用Builder模式:

ConcreteBuilderbuilder=newConcreteBuilder();

Directordirector=newDirector(builder);

director.construct();

Productproduct=builder.getResult();

第55章第70章第19章第174章第126章第6章第165章第73章第70章第30章第138章第223章第119章第206章第148章第183章第62章第211章第139章第63章第124章第181章第200章第14章第183章第128章第132章第181章第104章第4章第192章第65章第206章第156章第77章第16章第134章第43章第218章第32章第135章第148章第211章第8章第189章第159章第227章第19章第225章第99章第101章第26章第115章第182章第17章第200章第133章第216章第78章第117章第182章第20章第227章第48章第224章第225章第164章第30章第96章第198章第193章第141章第197章第216章第152章第47章第72章第186章第136章第136章第201章第201章第65章第145章第125章第195章第114章第49章第108章第214章第55章第19章第76章第22章第125章第215章第200章第52章第212章
第55章第70章第19章第174章第126章第6章第165章第73章第70章第30章第138章第223章第119章第206章第148章第183章第62章第211章第139章第63章第124章第181章第200章第14章第183章第128章第132章第181章第104章第4章第192章第65章第206章第156章第77章第16章第134章第43章第218章第32章第135章第148章第211章第8章第189章第159章第227章第19章第225章第99章第101章第26章第115章第182章第17章第200章第133章第216章第78章第117章第182章第20章第227章第48章第224章第225章第164章第30章第96章第198章第193章第141章第197章第216章第152章第47章第72章第186章第136章第136章第201章第201章第65章第145章第125章第195章第114章第49章第108章第214章第55章第19章第76章第22章第125章第215章第200章第52章第212章
主站蜘蛛池模板: 阳春市| 开江县| 白水县| 乌苏市| 鄂州市| 遵义市| 长沙县| 垫江县| 阳新县| 桑植县| 九龙县| 新营市| 台东市| 佛坪县| 新巴尔虎右旗| 吉木乃县| 长白| 定安县| 天台县| 常熟市| 冀州市| 乐清市| 鹤岗市| 南华县| 重庆市| 卫辉市| 左云县| 鄯善县| 台山市| 凤城市| 鄂温| 金门县| 鄂托克前旗| 东丽区| 德安县| 瓮安县| 唐河县| 白城市| 咸丰县| 新河县| 潜江市|