成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

建造者模式 + 構(gòu)造方法的語(yǔ)義化實(shí)現(xiàn)

zhkai / 3396人閱讀

摘要:場(chǎng)景假設(shè)宏基筆記本僅由和內(nèi)存組成,其中生產(chǎn)和內(nèi)存的工序可以獨(dú)立出來(lái)交由各個(gè)廠(chǎng)商制造。具體代碼如下品種普通方法實(shí)現(xiàn)建造者模式實(shí)現(xiàn)內(nèi)部類(lèi)實(shí)現(xiàn)建造者品種客戶(hù)端調(diào)用,語(yǔ)義化躍然紙上。普通方法實(shí)現(xiàn)母一號(hào)土豬黑色建造者模式實(shí)現(xiàn)公黑珍珠白色

描述:一個(gè)復(fù)雜的對(duì)象由多個(gè)部件組成,每個(gè)部件可以獨(dú)立生成,部件的組裝過(guò)程交由指引者完成。

場(chǎng)景:假設(shè)宏基筆記本僅由CPU和內(nèi)存組成,其中生產(chǎn)CPU和內(nèi)存的工序可以獨(dú)立出來(lái)交由各個(gè)OEM廠(chǎng)商制造。

實(shí)現(xiàn):

筆記本:

class AcerComputer {
    String cpu;
    String memory;
    AcerComputer(String cpu, String memory) {
        this.cpu = cpu;
        this.memory = memory;
    }
}

定義一個(gè)建造者:

interface Builder {
    public String createCPU();
    public String createMemory();
}

定義一個(gè)OEM,負(fù)責(zé)生成CPU、內(nèi)存:

class OEM implements Builder {
    @Override
    public String createCPU() {
        return "CPU";
    }
    @Override
    public String createMemory() {
        return "內(nèi)存";
    }
}

定義宏基公司,下定單讓OEM制造CPU和內(nèi)存,它自己組裝成電腦:

class AcerCompany {
    private Builder builder;
    private String name;
    AcerCompany(Builder builder) {
        this.builder = builder;
        this.name = "宏基公司";
    }
    public AcerComputer create() {
        String cpu = builder.createCPU();
        String memory = builder.createMemory();
        return new AcerComputer(cpu, memory);
    }
}

客戶(hù)端調(diào)用:

public static void main(String[] args) {
    Builder builder = new OEM();
    AcerCompany acerCompany = new AcerCompany(builder);
    // 宏基電腦出廠(chǎng)了
    AcerComputer computer = acerCompany.create();
}

==============邪惡的分割線(xiàn)==========================================

利用建造者模式寫(xiě)構(gòu)造方法:

  

如果一個(gè)對(duì)象的構(gòu)造參數(shù)非常多,可以考慮使用建造者模式構(gòu)造參數(shù),從而使得構(gòu)造的過(guò)程更加語(yǔ)義化。

舉個(gè)“蘿卜”,我們要構(gòu)造一頭豬,它的屬性有雌雄、年齡、品種、膚色等。具體代碼如下:

class Pig {
    String sex;
    int age;
    String varieties; // 品種
    String color; 
    // 普通方法實(shí)現(xiàn)
    Pig(String sex, int age, String varieties, String color) {
        this.sex = sex;
        this.age = age;
        this.varieties = varieties;
        this.color = color;
    }
    // 建造者模式實(shí)現(xiàn)
    Pig(Builder builder) {
        this.sex = builder.sex;
        this.age = builder.age;
        this.color = builder.color;
        this.varieties = builder.varieties;
    }
    // 內(nèi)部類(lèi)實(shí)現(xiàn)建造者
    static class Builder {
        String sex;
        int age;
        String varieties; // 品種
        String color; 
        public Builder sex(String sex) {
            this.sex = sex;
            return this;
        }
        public Builder age(int age) {
            this.age = age;
            return this;
        }
        public Builder varieties(String varieties) {
            this.varieties = varieties;
            return this;
        }
        public Builder color(String color) {
            this.color = color;
            return this;
        }
        public Pig build() {
            return new Pig(this);
        }
    }
}

客戶(hù)端調(diào)用,語(yǔ)義化躍然紙上。

public static void main(String[] args) {
    // 普通方法實(shí)現(xiàn)
    Pig pig1 = new Pig("母", 10, "一號(hào)土豬", "黑色");
    // 建造者模式實(shí)現(xiàn)
    Pig pig2 = new Pig.Builder().sex("公").age(5).varieties("黑珍珠").color("白色").build();
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64028.html

相關(guān)文章

  • 細(xì)談JavaScript中一些設(shè)計(jì)模式

    摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫(xiě)字母開(kāi)頭推薦注意的成本。簡(jiǎn)單工廠(chǎng)模式使用一個(gè)類(lèi)通常為單體來(lái)生成實(shí)例。 @(書(shū)籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見(jiàn)設(shè)計(jì)模式 一直對(duì)設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡(jiǎn)介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...

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

    摘要:建造者模式建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建層與其表示層相互分離,同樣的構(gòu)建過(guò)程可采用不同的表示。工廠(chǎng)模式主要是為了創(chuàng)建對(duì)象實(shí)例或者類(lèi)簇抽象工廠(chǎng),關(guān)心的是最終產(chǎn)出創(chuàng)建的是什么,而不關(guān)心創(chuàng)建的過(guò)程。 建造者模式 建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建層與其表示層相互分離,同樣的構(gòu)建過(guò)程可采用不同的表示。工廠(chǎng)模式主要是為了創(chuàng)建對(duì)象實(shí)例或者類(lèi)簇(抽象工廠(chǎng)),關(guān)心的是最終產(chǎn)出(創(chuàng)建)的是什么,而不關(guān)心創(chuàng)建...

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

    摘要:建造者模式實(shí)現(xiàn)建造者模式實(shí)現(xiàn)創(chuàng)建抽象建造者類(lèi)創(chuàng)建具體建造者類(lèi)。建造者模式使用場(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干貨盤(pán)點(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ō)人話(huà):將構(gòu)...

    番茄西紅柿 評(píng)論0 收藏2637
  • 工廠(chǎng)模式-設(shè)計(jì)模式

    摘要:不過(guò)怎么來(lái)說(shuō)工廠(chǎng)方法模式是簡(jiǎn)單工廠(chǎng)模式的升級(jí)版。其次,工廠(chǎng)模式是一種典型的解耦模式,迪米特法則在工廠(chǎng)模式中表現(xiàn)的尤為明顯。 工廠(chǎng)模式想必大家在開(kāi)發(fā)過(guò)程中會(huì)經(jīng)常用到,顧名思義其就是作為一個(gè)工廠(chǎng)用來(lái)生產(chǎn)產(chǎn)品的,下面來(lái)簡(jiǎn)單介紹幾種常見(jiàn)的工廠(chǎng)模式。 0x01 簡(jiǎn)單工廠(chǎng)模式 1、類(lèi)圖結(jié)構(gòu)showImg(/img/bVFf1t?w=531&h=278); 2、角色分類(lèi) 工廠(chǎng)類(lèi):其內(nèi)部具有一點(diǎn)的判...

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

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

0條評(píng)論

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