最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

什么是建造者模式

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

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

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

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

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

缺點(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)容只有丹藥名字和效果,并沒有材料之類的。

丹藥

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

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一個丹藥對象,聲明兩個抽象方法分別是給丹藥命名和賦予丹藥效果,還有一個生成丹藥的方法。

//抽象丹方
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)兩個抽象方法。

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

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

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

太虛化神丹丹方

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

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

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

神醫(yī)豆豆

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

public class DouDou {
    private final DanFang danLu;

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

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

測試

煉制兩個丹藥。

public class Demo {
    public static void main(String[] args) {
        //煉制九轉(zhuǎn)仙丹
        //new一個九轉(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一個九轉(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ī)豆豆有一套煉制丹藥的方流程,所以不論丹方如何變化,但是煉丹流程都一樣。想要煉制其他丹藥只需要一個丹方就可以完成。

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

相關(guān)文章

  • Intellij IDEA中啟動多個微服務(wù)(開啟Run Dashboard管理)

    Intellij IDEA中啟動多個微服務(wù)(開啟Run Dashboard管理)

    這篇文章主要介紹了Intellij IDEA中啟動多個微服務(wù)(開啟Run Dashboard管理),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JAVA提高第十篇 ArrayList深入分析

    JAVA提高第十篇 ArrayList深入分析

    這篇文章主要深入分析了JAVA提高第十篇ArrayList的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java進(jìn)階教程之異常處理

    Java進(jìn)階教程之異常處理

    這篇文章主要介紹了Java進(jìn)階教程之異常處理,本文講解了JAVA的異常處理機(jī)制、異常的類型、拋出異常、自定義異常等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • SpringBoot?@Profile的使用

    SpringBoot?@Profile的使用

    本文主要介紹了SpringBoot?@Profile的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringMVC請求亂碼處理的2種方式

    SpringMVC請求亂碼處理的2種方式

    這篇文章主要介紹了SpringMVC請求亂碼處理的2種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java跨域cookie失效問題及解決

    java跨域cookie失效問題及解決

    文章介紹了現(xiàn)代Web應(yīng)用中前后端分離架構(gòu)下跨域請求和Cookie處理的問題,包括現(xiàn)象描述、跨域Cookie的原理、解決方案(如Java后端、前端Vue、Nginx配置,以及使用window.localStorage存儲數(shù)據(jù)),以及實(shí)踐案例和常見問題排查
    2025-01-01
  • 實(shí)踐講解SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式

    實(shí)踐講解SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式

    本篇講解了SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式,通過實(shí)踐的方式更通俗易懂,對此不了解的同學(xué)跟著小編往下看吧
    2021-09-09
  • 使用jdbcTemplate查詢返回自定義對象集合代碼示例

    使用jdbcTemplate查詢返回自定義對象集合代碼示例

    這篇文章主要介紹了使用jdbcTemplate查詢返回自定義對象集合代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Value注解支持對象類型ConfigurationProperties功能

    Value注解支持對象類型ConfigurationProperties功能

    這篇文章主要為大家介紹了Value注解支持對象類型ConfigurationProperties功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 使用Spring中的scope配置和@scope注解

    使用Spring中的scope配置和@scope注解

    這篇文章主要介紹了使用Spring中的scope配置和@scope注解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

扶沟县| 广丰县| 贡嘎县| 云龙县| 乌兰浩特市| 滁州市| 来安县| 龙陵县| 女性| 竹山县| 松溪县| 拉孜县| 克什克腾旗| 榆林市| 灵石县| 武功县| 寿阳县| 黑河市| 青阳县| 冷水江市| 寿阳县| 拜泉县| 滨州市| 句容市| 留坝县| 马关县| 白银市| 界首市| 建德市| 富源县| 绥阳县| 泸溪县| 青浦区| 湖州市| 灯塔市| 梅州市| 沂源县| 滁州市| 商都县| 阆中市| 海阳市|