建造者模式

1.最基本的模式

由四部分組成:

  • 1.Builder
  • 2.Director
  • 3.ConcreateBuilder
  • 4.Product
    Product就是一個(gè)產(chǎn)品的模型,java中的javabean。ConcreateBuilder 就是為javabean設(shè)置參數(shù)。Builder就是把設(shè)置參數(shù)的接口抽象出來(lái)。Director就是調(diào)用ConcreateBuilder的方法。

我們舉個(gè)例子
假如我們要安裝一臺(tái)電腦,Product就是一個(gè)電腦的模型。把設(shè)置參數(shù)的接口抽象出來(lái)。讓ConcreateBuilder去實(shí)現(xiàn)接口并且設(shè)置參數(shù)。Director依次去調(diào)用設(shè)置參數(shù)的方法。

public class Computer {

    private String cpu;
    private String hd;
    private String mainBoard;
//省略get set 方法
public interface IBuildComputer {

    void setMainboard();
    void setCpu();
    void setHD();

    Computer getComputer();


}
public class CreateComputer implements IBuildComputer {

    Computer computer ;
    public CreateComputer(){
        computer = new Computer();
    }

    @Override
    public void setMainboard() {
        computer.setMainBoard("安裝主板");
    }

    @Override
    public void setCpu() {
        computer.setCpu("安裝cpu");
    }

    @Override
    public void setHD() {
        computer.setHd("安裝硬盤");
    }

    @Override
    public Computer getComputer() {
        return computer;
    }
}
public class Director {
    
        public Computer builder(IBuildComputer iBuildComputer){
            iBuildComputer.setCpu();
            iBuildComputer.setHD();
            iBuildComputer.setMainboard();
            return iBuildComputer.

測(cè)試類

public class ComputerTest {

    public static void main(String[] args){
        Director director = new Director();
        Computer builder = director.builder(new CreateComputer());

        System.out.print(builder.getCpu()+builder.getHd()+builder.getMainBoard());
    }


}

2.上面是最基礎(chǔ)的模式,現(xiàn)在升級(jí)了一下,通過(guò)靜態(tài)內(nèi)部類實(shí)現(xiàn)零件的無(wú)序話構(gòu)造。

public class HighComputer {

    public String cpu;
    public String hd;
    public String mainBoard;

    public HighComputer(String cpu, String hd, String mainBoard){
        this.cpu = cpu;
        this.hd = hd;
        this.mainBoard = mainBoard;
    }

    static class Builder {
        private String cpu;
        private String hd;
        private String mainBoard;
        public Builder setCpu(String cpu){
            this.cpu = cpu;
            return this;
        }

        public Builder setHD(String hd){
            this.hd = hd;
            return this;
        }

        public Builder setMainBoard(String mainBoard){
            this.mainBoard =  mainBoard;
            return this;
        }

        public HighComputer build(){
            return new HighComputer(cpu,hd,mainBoard);
        }
    }
}

測(cè)試類

 HighComputer computer = new HighComputer.Builder().setCpu("i7")
.setHD("1G固態(tài)")
.setMainBoard("三無(wú)產(chǎn)品").build();

        System.out.print(computer.cpu+computer.hd+computer.mainBoard); 

優(yōu)點(diǎn):隱藏具體建造細(xì)節(jié),只需要簡(jiǎn)單配置參數(shù)就可以拿到產(chǎn)品。創(chuàng)建過(guò)程和產(chǎn)品本身解耦,易于維護(hù)和拓展,創(chuàng)建新的創(chuàng)造者無(wú)需修改產(chǎn)品,符合“開(kāi)閉原則”。
缺點(diǎn):1.建造者模式生產(chǎn)的產(chǎn)品,適合共同點(diǎn)較多的產(chǎn)品,使用范圍有局限性。2.如果產(chǎn)品內(nèi)部變化復(fù)雜,會(huì)創(chuàng)建不同的創(chuàng)建者,是系統(tǒng)龐大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 沒(méi)有人買車會(huì)只買一個(gè)輪胎或者方向盤,大家買的都是一輛包含輪胎、方向盤和發(fā)動(dòng)機(jī)等多個(gè)部件的完整汽車。如何將這些部件組...
    justCode_閱讀 1,997評(píng)論 1 6
  • 【學(xué)習(xí)難度:★★★★☆,使用頻率:★★☆☆☆】直接出處:建造者模式梳理和學(xué)習(xí):https://github.com...
    BruceOuyang閱讀 875評(píng)論 0 5
  • 1.Builder模式是怎么來(lái)的 考慮這樣一個(gè)場(chǎng)景,假如有一個(gè)類User,里面有很多屬性,并且你希望這些類的屬性都...
    QuantRuu閱讀 648評(píng)論 0 48
  • 黑鏡S03E04 San Juniperov 圣朱尼佩洛 習(xí)慣黑鏡高科風(fēng)格后,對(duì)此集還是很摸不著頭腦的。老式的酒吧...
    蠻凹凸閱讀 3,766評(píng)論 0 0
  • 所謂共情,是指能夠站在對(duì)方的角度看問(wèn)題,體會(huì)到對(duì)方的情緒。也就是說(shuō),有共情能力的人,知道對(duì)方和自己是不同的,對(duì)方的...
    愛(ài)予茉閱讀 419評(píng)論 0 0

友情鏈接更多精彩內(nèi)容