国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式之建造者

Lucky_Boy / 1518人閱讀

摘要:而這個(gè)組裝主機(jī)的過(guò)程就是建造者模式最真實(shí)的寫照。建造者都是獨(dú)立的,我們可以對(duì)建造過(guò)程進(jìn)行優(yōu)化和細(xì)化,不會(huì)對(duì)其他的模塊產(chǎn)生影響。建造者模式和工廠模式十分相像,但建造者模式關(guān)注的是配件和裝配工藝順序,而工廠模式的中心是對(duì)象的創(chuàng)建

前言

最近絕地逃生這個(gè)游戲大火,好多朋友為了吃雞,都會(huì)自己組裝一個(gè)高配主機(jī)來(lái)支持自己打游戲 。而這個(gè)組裝主機(jī)的過(guò)程就是建造者模式最真實(shí)的寫照....~。~

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

Product:要構(gòu)造的復(fù)雜的對(duì)象

Builder:定義一個(gè)抽象構(gòu)造接口,規(guī)范產(chǎn)品每個(gè)部件的構(gòu)造,并不涉及具體實(shí)現(xiàn)

ConcreteBuilder:真正的構(gòu)造者,對(duì)產(chǎn)品每個(gè)部件的構(gòu)造給出具體實(shí)現(xiàn),并提供該產(chǎn)品的實(shí)例

Director:作為一個(gè)導(dǎo)演,它的職責(zé)就是調(diào)用ConcreteBuilder,讓產(chǎn)品的部件按照我們指定的順序去設(shè)置,然后返回我們的實(shí)例

代碼分析
public class Computer {

    private String cpu;
    //主板
    private String mainboard;
    //內(nèi)存
    private String memory;
    //顯卡
    private String graphicsCard;
    //電源
    private String powerSource;

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public String getMainboard() {
        return mainboard;
    }

    public void setMainboard(String mainboard) {
        this.mainboard = mainboard;
    }

    public String getMemory() {
        return memory;
    }

    public void setMemory(String memory) {
        this.memory = memory;
    }

    public String getGraphicsCard() {
        return graphicsCard;
    }

    public void setGraphicsCard(String graphicsCard) {
        this.graphicsCard = graphicsCard;
    }

    public String getPowerSource() {
        return powerSource;
    }

    public void setPowerSource(String powerSource) {
        this.powerSource = powerSource;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "cpu="" + cpu + """ +
                ", mainboard="" + mainboard + """ +
                ", memory="" + memory + """ +
                ", graphicsCard="" + graphicsCard + """ +
                ", powerSource="" + powerSource + """ +
                "}";
    }
}
public interface ComputerBuilder {

    void buildCpu();
    void buildMainboard();
    void buildMemory();
    void buildGraphicsCard();
    void buildPowerSource();

    Computer build();
}
public class ConcreteComputerBuilder implements ComputerBuilder {

    private Computer computer = new Computer();

    @Override
    public void buildCpu() {
        computer.setCpu("intel 7700");
    }

    @Override
    public void buildMainboard() {
        computer.setMainboard("華碩b5");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("海盜船16g內(nèi)存條雙交火");
    }

    @Override
    public void buildGraphicsCard() {
        computer.setGraphicsCard("n卡1080");
    }

    @Override
    public void buildPowerSource() {
        computer.setPowerSource("安鈦克全模組金牌額定500w");
    }

    @Override
    public Computer build() {
        return computer;
    }
}
public class ComputerDirector {

    private ComputerBuilder builder = new ConcreteComputerBuilder();

    public Computer getComputer(){

        builder.buildCpu();
        builder.buildGraphicsCard();
        builder.buildMainboard();
        builder.buildMemory();
        builder.buildPowerSource();

        return builder.build();
    }

}
public class Client {

    public static void main(String[] args) {

        ComputerDirector computerDirector = new ComputerDirector();
        Computer computer = computerDirector.getComputer();

        System.out.println("這個(gè)電腦的配置為:"+computer.toString());

    }
}
測(cè)試結(jié)果:這個(gè)電腦的配置為:Computer{cpu="intel 7700", mainboard="華碩b5", memory="海盜船16g內(nèi)存條雙交火", graphicsCard="n卡1080", powerSource="安鈦克全模組金牌額定500w"}
使用場(chǎng)景

需要產(chǎn)生的對(duì)象有復(fù)雜的結(jié)構(gòu)

在對(duì)象創(chuàng)建過(guò)程中會(huì)使用到系統(tǒng)中的一些其它對(duì)象,這些對(duì)象在產(chǎn)品對(duì)象的創(chuàng)建過(guò)程中不易得到。

相同的方法,不同的執(zhí)行順序產(chǎn)生不同的結(jié)果。

或許會(huì)有人對(duì)第三個(gè)不是特別理解,因?yàn)樵谘b機(jī)這個(gè)業(yè)務(wù)體現(xiàn)的不是特別明顯。我們不妨換個(gè)場(chǎng)景考慮,煮湯都有特定的工序,什么時(shí)候加水,先加什么調(diào)料后加什么調(diào)料,如果你加的順序不一樣,做出的湯的味道都會(huì)有差別,對(duì)于此種場(chǎng)景可以使用該模式

總結(jié)

使用建造者模式,可以屏蔽產(chǎn)品內(nèi)部實(shí)現(xiàn)的細(xì)節(jié),直接生產(chǎn)產(chǎn)品即可。建造者都是獨(dú)立的,我們可以對(duì)建造過(guò)程進(jìn)行優(yōu)化和細(xì)化,不會(huì)對(duì)其他的模塊產(chǎn)生影響。建造者模式和工廠模式十分相像,但建造者模式關(guān)注的是配件和裝配工藝(順序),而工廠模式的中心是對(duì)象的創(chuàng)建.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/70696.html

相關(guān)文章

  • 一天一個(gè)設(shè)計(jì)模式JS實(shí)現(xiàn)——建造模式

    摘要:參考文章設(shè)計(jì)模式之建造者模式一什么是建造者模式建造者模式是將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 參考文章:java設(shè)計(jì)模式之建造者模式 一、什么是建造者模式建造者模式:是將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。工廠類模式提供的是創(chuàng)建單個(gè)類的模式,而建造者模式則是將各種產(chǎn)品集中起來(lái)進(jìn)行管理,用來(lái)創(chuàng)建復(fù)合對(duì)象,所謂...

    boredream 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式(三)——建造模式

    摘要:建造者模式實(shí)現(xiàn)建造者模式實(shí)現(xiàn)創(chuàng)建抽象建造者類創(chuàng)建具體建造者類。建造者模式使用場(chǎng)景建造者模式使用場(chǎng)景相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果時(shí),可以采用建造者模式。1、什么是建造者模式 Separate the construction of a complex object from its representation so that the same constructi...

    Forelax 評(píng)論0 收藏0
  • #yyds干貨盤點(diǎn)#Java設(shè)計(jì)模式(三)——建造模式

    1、什么是建造者模式Separate the construction of a complex object from its representation so that the same construction process can create different representations.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離, 使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 說(shuō)人話:將構(gòu)...

    番茄西紅柿 評(píng)論0 收藏2637
  • 設(shè)計(jì)模式建造設(shè)計(jì)模式

    摘要:本質(zhì)建造者設(shè)計(jì)模式分離了對(duì)象子組件的構(gòu)造過(guò)程和組裝過(guò)程,實(shí)現(xiàn)了構(gòu)建與組裝的解耦,不同的構(gòu)建器相同的組裝順序以及相同的構(gòu)建器不同的組裝順序都可以創(chuàng)建出不同的對(duì)象,使得構(gòu)建與組裝充分解耦,進(jìn)而實(shí)現(xiàn)構(gòu)建算法與組裝算法的解耦,從而實(shí)現(xiàn)更好的復(fù)用。 這是設(shè)計(jì)模式系列的第二篇——建造者設(shè)計(jì)模式,我希望推送的文章是一個(gè)系列的,盡量保持一樣的寫作風(fēng)格,盡量把我理解的闡述清楚,關(guān)于建造者設(shè)計(jì)模式主要從以...

    wangxinarhat 評(píng)論0 收藏0
  • 設(shè)計(jì)模式建造模式

    摘要:建造者實(shí)現(xiàn)抽象類的所有未實(shí)現(xiàn)的方法,具體來(lái)說(shuō)一般是兩項(xiàng)任務(wù)組建產(chǎn)品返回組建好的產(chǎn)品。 0x01.定義與類型 定義:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 用戶只需指定需要建造的類型就可以得到他們,建造過(guò)程及細(xì)節(jié)不需要知道 類型:創(chuàng)建型 實(shí)現(xiàn)建造模式的兩種方式 1.抽象建造者 UML: showImg(https://segmentfault.co...

    banana_pi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<