国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

建造者模式

2019-11-11 07:15:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

建造者模式(Builder),將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

如果用了建造者模式,那么用戶就只需指定需要建造的類(lèi)型就可以得到它們,而具體建造的過(guò)程和細(xì)節(jié)就不需知道了。

//PRoduct類(lèi)--產(chǎn)品類(lèi),由多個(gè)部件組成。class Product{    List<String> parts = new List<String>();    public void add(String part)    {        parts.add(part);    }    public void show()    {        foreach(String s : parts)            System.out.print(s);    }}
//Builder類(lèi)--抽象建造者類(lèi),確定產(chǎn)品由兩個(gè)部件PartA和PartB組成,并聲明一個(gè)得到產(chǎn)品建造后結(jié)果的方法GetResult。abstract class Builder{    public abstract void buildPartA();    public abstract void buildPartB();    public abstract Product getResult();}

class ConcreteBuilder1 extends Builder{    private Product product = new Product();    @override    public void buildPartA()    {        product.add(“部件A”);    }    @override    public void buildPartB()    {        product.add(“部件B”);    }    @override    public Product getResult()    {        return product;    }}

class ConcreteBuilder2 extends Builder{    private Product product = new Product();    @override    public void buildPartA()    {        product.add(“部件X”);    }    @override    public void buildPartB()    {        product.add(“部件Y”);    }    @override    public Product getResult()    {        return product;    }}

//Director類(lèi)--指揮者類(lèi)class Director{    public void construct(Builder builder)    {        builder.BuilderPartA();        builder.BuilderPartB();    }}

main(){    Director director = new Director();    Builder b1 = new ConcreteBuilder1();    Builder b2 = new ConcreteBuilder2();    director.construct(b1);    Product p1 = b1.getResult();    p1.show();    director.construct(b2);    Product p2 = b2.getResult();    p2.show();}

Builder是為創(chuàng)建一個(gè)Product對(duì)象的各個(gè)部件指定的抽象接口。

ConcreteBuilder是具體建造者,實(shí)現(xiàn)Builder接口,構(gòu)造和裝配各個(gè)部件。

Director是指揮者,用于創(chuàng)建一些復(fù)雜對(duì)象,這些對(duì)象內(nèi)部構(gòu)建的建造順序通常是穩(wěn)定的,但對(duì)象內(nèi)部的構(gòu)建通常面臨著復(fù)雜的變化。

Product是具體產(chǎn)品角色。

 

建造者模式的好處就是使得建造代碼與表示代碼分離,由于建造者隱藏了該產(chǎn)品是如何組裝的,所以若需改變一個(gè)產(chǎn)品的內(nèi)部表示,只需要再定義一個(gè)具體的建造者就可以了。

 

建造者模式是當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們的裝配方式時(shí)適用的模式。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五寨县| 孟村| 赣州市| 吉水县| 绥化市| 沈丘县| 东乡| 乳山市| 清水河县| 阜南县| 独山县| 双桥区| 汾阳市| 榆林市| 安多县| 通山县| 龙州县| 平顶山市| 丘北县| 江西省| 蓝山县| 太保市| 定远县| 资阳市| 宜宾县| 买车| 藁城市| 丰都县| 偃师市| 石狮市| 乌拉特前旗| 高州市| 搜索| 察雅县| 孝义市| 额尔古纳市| 南昌市| 汉沽区| 临泉县| 双江| 临颍县|