欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解建造者模式

 更新時(shí)間:2022年04月09日 17:20:02   作者:桃花鍵神  
建造者模式,是一種對象構(gòu)建模式 它可以將復(fù)雜對象的建造過程抽象出來,使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對象。本文將通過示例講解建造者模式,需要的可以參考一下

什么是建造者模式

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

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

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

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

3、客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),建造者可以對創(chuàng)建過程逐步細(xì)化,而不對其它模塊產(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ù)成本較大。

知識點(diǎn)

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

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

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

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

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

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

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

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

注意:為了省事這里說的丹方內(nè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è)丹藥對象,聲明兩個(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();
    }
}

測試

煉制兩個(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());
    }
}

在這里插入圖片描述

總結(jié)

神醫(yī)豆豆有一套煉制丹藥的方流程,所以不論丹方如何變化,但是煉丹流程都一樣。想要煉制其他丹藥只需要一個(gè)丹方就可以完成。

到此這篇關(guān)于Java 設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解建造者模式的文章就介紹到這了,更多相關(guān)Java 建造者模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • 淺談Timer和TimerTask與線程的關(guān)系

    淺談Timer和TimerTask與線程的關(guān)系

    下面小編就為大家?guī)硪黄獪\談Timer和TimerTask與線程的關(guān)系。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • Java集合類的組織結(jié)構(gòu)和繼承、實(shí)現(xiàn)關(guān)系詳解

    Java集合類的組織結(jié)構(gòu)和繼承、實(shí)現(xiàn)關(guān)系詳解

    這篇文章主要介紹了Java集合類的組織結(jié)構(gòu)和繼承、實(shí)現(xiàn)關(guān)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • java.util.NoSuchElementException原因及兩種解決方法

    java.util.NoSuchElementException原因及兩種解決方法

    本文主要介紹了java.util.NoSuchElementException原因及兩種解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Fluent Mybatis快速入門詳細(xì)教程

    Fluent Mybatis快速入門詳細(xì)教程

    由于FluentMybatis是基于mybatis上做封裝和擴(kuò)展的,所以這里主要聊聊mybatis處理的方式,以及給出FluentMybatis的解放方案。對Fluent Mybatis入門相關(guān)知識感興趣的朋友一起看看吧
    2021-08-08
  • Java使用Sftp和Ftp實(shí)現(xiàn)對文件的上傳和下載

    Java使用Sftp和Ftp實(shí)現(xiàn)對文件的上傳和下載

    這篇文章主要介紹了Java使用Sftp和Ftp實(shí)現(xiàn)對文件的上傳和下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中方法使用的深入講解

    Java中方法使用的深入講解

    這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 關(guān)于Java中反射的作用義及使用方法

    關(guān)于Java中反射的作用義及使用方法

    這篇文章主要介紹了關(guān)于Java中反射的作用義及使用方法,反射使得程序可以在運(yùn)行時(shí)對類進(jìn)行檢查和操作,而不需要在編譯時(shí)知道類的完整信息,需要的朋友可以參考下
    2023-07-07
  • Java使用Spring JdbcTemplate向in語句中傳遞參數(shù)的教程詳解

    Java使用Spring JdbcTemplate向in語句中傳遞參數(shù)的教程詳解

    這篇文章主要給大家介紹Java如何使用Spring JdbcTemplate向in語句中傳遞參數(shù),文中有詳細(xì)的流程步驟和代碼示例,需要的朋友可以參考下
    2023-07-07
  • Java面試之限流的實(shí)現(xiàn)方式小結(jié)

    Java面試之限流的實(shí)現(xiàn)方式小結(jié)

    限流是指在各種應(yīng)用場景中,通過技術(shù)和策略手段對數(shù)據(jù)流量、請求頻率或資源消耗進(jìn)行有計(jì)劃的限制,本文為大家整理了常見的限流的實(shí)現(xiàn)方式,有需要的可以參考下
    2024-02-02
  • 最新評論