多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 五,建造者模式

五,建造者模式

來源:程序員人生   發(fā)布時間:2016-11-19 14:42:09 閱讀次數(shù):3313次

建造者模式

建造者模式可以將1個產(chǎn)品的內(nèi)部表象與產(chǎn)品的生成進(jìn)程分割開來,從而可使1個建造進(jìn)程生成具有不同的內(nèi)部表象的產(chǎn)品對象。如果我們用了建造者模式,那末用戶就只需指定需要建造的類型就能夠得到它們,而具體建造的進(jìn)程和細(xì)節(jié)就不需要知道。

建造者模式基礎(chǔ)類圖結(jié)構(gòu)

建造者模式中存在的角色

  • 抽象建造者:給出1個接口,或是1個抽象類,以規(guī)范產(chǎn)品對象的各個組成成份的建造。模式中直接創(chuàng)建產(chǎn)品對象的是具體建造者角色。具體建造者角色必須要實現(xiàn)抽象建造者的兩個方法:1種是建造方法,2是結(jié)果返回方法。
  • 具體建造者:擔(dān)負(fù)這個角色的是與利用程序緊密相干的1些類,它們在利用程序調(diào)用下創(chuàng)建產(chǎn)品的實例。它的任務(wù)如上抽象建造者提到的1是建造方法,2是結(jié)果返回方法。
  • 導(dǎo)演者角色:擔(dān)負(fù)這個角色的類調(diào)用具體建造者角色以創(chuàng)建產(chǎn)品對象,應(yīng)當(dāng)指出的是,導(dǎo)演者角色并沒有產(chǎn)品類的具體知識,真正具有產(chǎn)品類的是具體建造角色。
  • 產(chǎn)品角色:1個系統(tǒng)中會有過剩1個的產(chǎn)品類,而且這些產(chǎn)品類其實不1定有共同的接口,而且可以完全不相干聯(lián)的。

導(dǎo)演者角色是與客戶端打交道的角色。導(dǎo)演者角色將客戶端創(chuàng)建產(chǎn)品的要求劃分為對各個零件的建造要求,再將這些要求委派給具體建造者角色。具體建造者角色是做具體建造工作的,但是卻不為客戶端所知。

建造者模式源代碼實現(xiàn)

產(chǎn)品角色

package com.designpattern.builder;

/**
 * Created by Administrator on 2016/9/21.
 */
public class Product {
    private String part1;
    private String part2;

    public String getPart1() {
        return part1;
    }

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public String getPart2() {

        return part2;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    @Override
    public String toString() {
        return "Product{" +
                "part1='" + part1 + '\'' +
                ", part2='" + part2 + '\'' +
                '}';
    }
}

抽象建造者角色

package com.designpattern.builder;

/**
 * Created by Administrator on 2016/9/21.
 */
abstract public class Builder {

    public abstract void buildPart1();

    public abstract void buildPart2();

    public abstract Product retrieveResult();
}

具體建造者角色

package com.designpattern.builder;

/**
 * Created by Administrator on 2016/9/21.
 */

public class ConcreteBuilder extends Builder {

    private Product product = new Product();

    @Override
    public void buildPart1() {
        System.out.println("part1部份被創(chuàng)建");
        product.setPart1("part1");
    }

    @Override
    public void buildPart2() {
        System.out.println("part2部份被創(chuàng)建");
        product.setPart2("part2");
    }

    @Override
    public Product retrieveResult() {
        return product;
    }
}

導(dǎo)演者角色

package com.designpattern.builder;

/**
 * Created by Administrator on 2016/9/21.
 */
public class Director {
    private Builder builder;

    public Product construct(Builder builder){
        builder.buildPart1();
        builder.buildPart2();
        Product product = builder.retrieveResult();
        return product;
    }
}

客戶端調(diào)用

package com.designpattern.builder;

/**
 * Created by Administrator on 2016/9/21.
 */
public class Client {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder = new ConcreteBuilder();
        Product product = director.construct(builder);
        System.out.println(product);
    }
}

多產(chǎn)品的建造者模式

具體建造角色分成A和B分別用來建造產(chǎn)品A和產(chǎn)品B,本來這個具體建造者角色可以設(shè)計成1個,但是如果系統(tǒng)中產(chǎn)品類增加的話,我們就要在這個具體建造者類中添加增加的產(chǎn)品的建造方法,不符合軟件設(shè)計的“開——閉”原則,所以,我采取了1個具體建造者負(fù)責(zé)1個具體產(chǎn)品類。

建造者模式與抽象工廠模式比較

建造者模式跟抽象工廠模式類似,都是用來創(chuàng)建同時屬于幾個產(chǎn)品族的對象的模式。但是抽象工廠模式中,每次工廠對象被調(diào)用時都會返回1個完全的產(chǎn)品對象,客戶端可能會用這個對象跟其他的對象組成更大更復(fù)雜的對象。而建造者模式是1點1點建造出1個復(fù)雜的產(chǎn)品,建造的進(jìn)程產(chǎn)生的建造者角色內(nèi)部,客戶端拿到的就是1個完全的對象。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品视频网站 | 亚洲精品久久久成人 | 欧美伦理片在线播放 | 成人欧美视频在线看免费 | 天天亚洲综合 | 欧美一区亚洲二区 | 久久精品免费一区二区三区 | 久久精品国产99久久无毒不卡 | 亚洲天堂网站 | 最近的中文字幕免费视频1 最近的中文字幕免费完整 最近的中文字幕视频大全高清 | 免费毛片二级c片观看动漫 免费毛片全部不收费的 | 伊人网网| 成人福利在线 | 欧美国产日韩在线播放 | 亚洲高清一区二区三区四区 | 欧美.成人.综合在线 | 国产毛片a精品毛 | 在线第一页 | 视频一区国产 | 爱爱的免费视频 | 国产人成精品综合欧美成人 | 亚洲国产精品乱码在线观看97 | 国产叼嘿视频 | 亚洲天堂久久精品 | 免费观看成人www精品视频在线 | 欧美在线一区二区三区不卡 | 日本高清精品动漫 | 国产一级性片 | 久久精品国产69国产精品亚洲 | 精品久久久久久午夜 | 手机在线看片国产日韩生活片 | 午夜视频在线观看免费观看在线观看 | 欧美日韩亚洲高清老妇性 | 欧美高清正版在线 | jizz免费看| 欧美69视频在线 | 久久99国产精一区二区三区! | 色播成人网 | 操操久久| 欧美乱妇高清无乱码亚洲欧美 | 午夜在线亚洲 |