简说生成器模式
設(shè)計(jì)模式之生成器模式
定義
生成器模式(又名建造者模式)是設(shè)計(jì)模式的一種,將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 —— [ 百度百科 ]
解釋說明
在生成器模式中,對復(fù)雜對象的創(chuàng)建,我們抽象化出統(tǒng)一的創(chuàng)建流程,在各個創(chuàng)建流程中,我們可以按需實(shí)現(xiàn)不同的業(yè)務(wù)邏輯。在對外顯示中,我們使用統(tǒng)一的外部指導(dǎo)者,通過抽象化出的統(tǒng)一創(chuàng)建流程,創(chuàng)建復(fù)雜對象。
代碼塊
public class Test { //生成器接口-構(gòu)建統(tǒng)一的創(chuàng)建流程interface Builder{public abstract void hair();public abstract void clothes(); public abstract void shose(); public abstract Man build(); }//具體的生成器class ConcreteBuilder implements Builder{private Man man = new Man(); @Overridepublic Man build(){hair();clothes();shose();return this.man;}@Overridepublic void hair() { man.hair = "卷發(fā)";}@Overridepublic void clothes() {man.clothes = "皮夾克";}@Overridepublic void shose() {man.shose = "帆布鞋";} }//指導(dǎo)者-調(diào)用生成器生成對象class Director{public Director(ConcreteBuilder concreteBuilder){this.concreteBuilder = concreteBuilder;}public Man returnMan(){return this.concreteBuilder.build();}private ConcreteBuilder concreteBuilder;}//產(chǎn)品類-被生成對象class Man{public String hair;public String clothes;public String shose;public void say(){System.out.println("我的外貌特征:" + hair + "," + clothes + "," + shose);}}//測試public static void main(String[] args) {//實(shí)例化生成器ConcreteBuilder concreteBuilder = new Test().new ConcreteBuilder();//實(shí)例化指導(dǎo)者Director director = new Test().new Director(concreteBuilder);//實(shí)例化現(xiàn)有類Man man = director.returnMan();man.say();} }代碼解讀
以上就是完整的生成器模式代碼實(shí)例。在以上代碼中,我們先抽象出一個生成器接口,此接口用于約束我們的產(chǎn)品(Man)類的創(chuàng)建流程。隨后創(chuàng)建的具體的生成器類(ConcreteBuilder),其中我們具體實(shí)現(xiàn)了一個復(fù)雜(Man)對象的生成過程。比如:需要什么樣的發(fā)型,需要什么樣的衣服,需要什么樣的鞋子。
當(dāng)然,上述的生成器類(ConcreteBuilder)只是一個簡單示范,在生成器模式中,該類可以有很多個,不同的生成器類具有不同的業(yè)務(wù)邏輯,從而保證了生成的產(chǎn)品類(Man)具有不一樣的屬性或者行為。
最后,我們創(chuàng)建一個指導(dǎo)類,用于調(diào)用具體的生成器類,從而標(biāo)準(zhǔn)化產(chǎn)品類創(chuàng)建的外部訪問接口,同時內(nèi)部可以有更加復(fù)雜的邏輯,以便滿足我們調(diào)用不同的生成器類創(chuàng)建不同的產(chǎn)品。
總結(jié)
優(yōu)點(diǎn)
試用場景
總結(jié)
- 上一篇: 24种设计模式-生成器模式
- 下一篇: ae效果英文版翻译对照表_AE中英文对照