溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java建造者模式案例分析

發(fā)布時(shí)間:2022-04-11 11:05:46 來(lái)源:億速云 閱讀:117 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Java建造者模式案例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java建造者模式案例分析”吧!

什么是建造者模式

建造者(Builder)模式的定義: 指將一個(gè)復(fù)雜對(duì)象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示,這樣的設(shè)計(jì)模式被稱為建造者模式。它是將一個(gè)復(fù)雜的對(duì)象分解為多個(gè)簡(jiǎn)單的對(duì)象,然后一步一步構(gòu)建而成。它將變與不變相分離,即產(chǎn)品的組成部分是不變的,但每一部分是可以靈活選擇的。

優(yōu)點(diǎn)

1、封裝性好,構(gòu)建和表示分離。

2、擴(kuò)展性好,各個(gè)具體的建造者相互獨(dú)立,有利于系統(tǒng)的解耦。

3、客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),建造者可以對(duì)創(chuàng)建過(guò)程逐步細(xì)化,而不對(duì)其它模塊產(chǎn)生任何影響,便于控制細(xì)節(jié)風(fēng)險(xiǎn)。

缺點(diǎn)

1、產(chǎn)品的組成部分必須相同,這限制了其使用范圍。

2、如果產(chǎn)品的內(nèi)部變化復(fù)雜,如果產(chǎn)品內(nèi)部發(fā)生變化,則建造者也要同步修改,后期維護(hù)成本較大。

知識(shí)點(diǎn)

建造者(Builder)模式和工廠模式的關(guān)注點(diǎn)不同:建造者模式注重零部件的組裝過(guò)程,而工廠方法模式更注重零部件的創(chuàng)建過(guò)程,但兩者可以結(jié)合使用。

建造者模式實(shí)現(xiàn)

案例: 神醫(yī)豆豆煉丹

產(chǎn)品角色(Product):丹藥

抽象建造者(Builder):抽象丹方

具體建造者(Concrete Builder):具體丹方

指揮者(Director):神醫(yī)豆豆

神醫(yī)豆豆煉制九轉(zhuǎn)仙丹和太虛化神丹

注意:為了省事這里說(shuō)的丹方內(nèi)容只有丹藥名字和效果,并沒(méi)有材料之類的。

丹藥

丹藥類聲明煉丹的名稱和效果兩個(gè)屬性

public class Dan {
    /* cailiao 丹藥的名稱
           danhuo 丹藥的效果*/
    private String name;
    private String xiaoguo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXiaoguo() {
        return xiaoguo;
    }

    public void setXiaoguo(String xiaoguo) {
        this.xiaoguo = xiaoguo;
    }
}

抽象丹方

抽象類,new一個(gè)丹藥對(duì)象,聲明兩個(gè)抽象方法分別是給丹藥命名和賦予丹藥效果,還有一個(gè)生成丹藥的方法。

//抽象丹方
abstract class DanFang {
    Dan dan = new Dan();

    public abstract void name();

    public abstract void xiaoguo();

    public Dan getDan() {
        return dan;
    }

}

九轉(zhuǎn)仙丹丹方

具體丹方類繼承丹方類,并且實(shí)現(xiàn)兩個(gè)抽象方法。

//九轉(zhuǎn)仙丹丹方
public class JiuZhuan extends DanFang {

    @Override
    public void name() {
        dan.setName("九轉(zhuǎn)仙丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("原地成仙");
    }
}

太虛化神丹丹方

具體丹方類繼承丹方類,并且實(shí)現(xiàn)兩個(gè)抽象方法。

//太虛化神丹丹方
public class Taixu extends DanFang {
    @Override
    public void name() {
        dan.setName("太虛化神丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("意念化神");
    }
}

神醫(yī)豆豆

聲明一個(gè)丹方屬性,一個(gè)有參構(gòu)造方法,一個(gè)煉丹方法。

public class DouDou {
    private final DanFang danLu;

    public DouDou(DanFang danLu) {
        this.danLu = danLu;
    }

    //煉丹方法
    public Dan lian() {
        //放入材料
        danLu.name();
        //釋放丹火
        danLu.xiaoguo();
        //成丹
        return danLu.getDan();
    }
}

測(cè)試

煉制兩個(gè)丹藥。

public class Demo {
    public static void main(String[] args) {
        //煉制九轉(zhuǎn)仙丹
        //new一個(gè)九轉(zhuǎn)仙丹的丹方
        DanFang jiu = new JiuZhuan();
        //把丹方給豆豆
        DouDou dou = new DouDou(jiu);
        //煉丹生成丹藥
        Dan dan = dou.lian();
        System.out.printf("丹藥名稱:%s   丹藥效果:%s", dan.getName(), dan.getXiaoguo());


        System.out.println();

        //煉制太虛化神丹
        //new一個(gè)九轉(zhuǎn)仙丹的丹方
        DanFang tai = new Taixu();
        //把丹方給豆豆
        DouDou dous = new DouDou(tai);
        //煉丹生成丹藥
        Dan dans = dous.lian();
        System.out.printf("丹藥名稱:%s   丹藥效果:%s", dans.getName(), dans.getXiaoguo());
    }
}

Java建造者模式案例分析

感謝各位的閱讀,以上就是“Java建造者模式案例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java建造者模式案例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI