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

Java建造者模式構(gòu)建復(fù)雜對象的最佳實踐

 更新時間:2023年04月29日 10:41:57   作者:.番茄炒蛋  
建造者模式,是一種對象構(gòu)建模式?它可以將復(fù)雜對象的建造過程抽象出來,使這個抽象過程的不同實現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對象。本文將通過示例講解建造者模式,需要的可以參考一下

介紹

Java中的建造者模式是一種創(chuàng)建型設(shè)計模式,它的主要目的是為了通過一系列簡單的步驟構(gòu)建復(fù)雜的對象,允許創(chuàng)建復(fù)雜對象的不同表示形式,同時隱藏構(gòu)造細(xì)節(jié).它能夠逐步構(gòu)建對象,即先創(chuàng)建基本對象,然后逐步添加更多屬性或部件,直到最終構(gòu)建出完整的對象.

該模式的主要思想是將對象的構(gòu)造過程分解成多個步驟,每個步驟都可以獨(dú)立運(yùn)行,并且在每個步驟完成后都可以返回一個中間狀態(tài),然后使用一個導(dǎo)演類來協(xié)調(diào)這些步驟,最終創(chuàng)建出完整的對象.

建造者模式通常包括一下角色:

  • 產(chǎn)品類(Product):被構(gòu)造出來的復(fù)雜對象,它具有多個屬性或部件.
  • 抽象構(gòu)造者類(Builder):定義了構(gòu)建復(fù)雜對象所需的方法和屬性.
  • 具體建造者類(ConcreteBuilder):實現(xiàn)抽象建造者類中定義的方法和屬性,并返回最終構(gòu)造的對象
  • 導(dǎo)演類(Director):負(fù)責(zé)協(xié)調(diào)各個具體建造者類的構(gòu)建過程,以及返回最終構(gòu)造的對象,

實現(xiàn)

首先創(chuàng)建一個產(chǎn)品類

package com.fanqiechaodan.build;
import lombok.Data;
/**
 * @Classname Car
 * @Description 產(chǎn)品類
 */
@Data
public class Car {
    private String brand;
    private String model;
    private String color;
    private int maxSpeed;
}

其次創(chuàng)建抽象建造者類

package com.fanqiechaodan.build;
/**
 * @Classname CarBuilder
 * @Description 抽象建造者類
 */
public abstract class CarBuilder {
    protected Car car;
    public CarBuilder(){
        car = new Car();
    }
    public abstract void buildBrand();
    public abstract void buildModel();
    public abstract void buildColor();
    public abstract void buildMaxSpeed();
    public Car getCar() {
        return car;
    }
}

然后創(chuàng)建具體構(gòu)造者類

package com.fanqiechaodan.build;
/**
 * @Classname BMWBuilder
 * @Description 具體構(gòu)造者類
 */
public class BMWBuilder extends CarBuilder {
    @Override
    public void buildBrand() {
        car.setBrand("BMW");
    }
    @Override
    public void buildModel() {
        car.setModel("X6");
    }
    @Override
    public void buildColor() {
        car.setColor("Black");
    }
    @Override
    public void buildMaxSpeed() {
        car.setMaxSpeed(218);
    }
}

創(chuàng)建導(dǎo)演類

package com.fanqiechaodan.build;
/**
 * @Classname Director
 * @Description 導(dǎo)演類
 */
public class Director {
    private CarBuilder carBuilder;
    public Director(CarBuilder carBuilder) {
        this.carBuilder = carBuilder;
    }
    public Car constructCar() {
        carBuilder.buildBrand();
        carBuilder.buildColor();
        carBuilder.buildMaxSpeed();
        carBuilder.buildModel();
        return carBuilder.getCar();
    }
}

測試

package com.fanqiechaodan.build;
/**
 * @Classname Demo
 * @Description 建造者模式
 */
public class Demo {
    public static void main(String[] args) {
        CarBuilder carBuilder = new BMWBuilder();
        Director director = new Director(carBuilder);
        Car car = director.constructCar();
        System.out.println(car.toString());
    }
}

總結(jié)

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

  • 簡化對象創(chuàng)建的過程:建造者模式可以將對象的構(gòu)造過程分解為多個步驟,使得對象的創(chuàng)建變得簡單明了,易于維護(hù)和擴(kuò)展
  • 提高可讀性:由于每個構(gòu)建步驟都有一個明確的名稱,因此代碼更具有可讀性和可維護(hù)性.
  • 靈活性:建造者模式允許您根據(jù)需要使用不同的構(gòu)建起創(chuàng)建不同的對象,從而提高了靈活性和可重用性.

缺點(diǎn):

  • 建造者模式需要創(chuàng)建多個對象,因此可能會增加系統(tǒng)的內(nèi)存開銷.
  • 由于建造者模式需要編寫多個類,因此可能會增加代碼量和復(fù)雜性.

應(yīng)用場景:

  • 當(dāng)對象需要多個步驟才能創(chuàng)建時,可以使用建造者模式
  • 當(dāng)需要創(chuàng)建多個不同的對象時,可以使用建造者模式,每個對象的構(gòu)造過程可以由不同的構(gòu)建器來完成
  • 當(dāng)對象的構(gòu)造過程非常復(fù)雜或需要進(jìn)行多項配置時,可以使用建造者模式
  • 總的來說,建造者模式非常適合創(chuàng)建復(fù)雜的對象,并且使代碼更加靈活和已于擴(kuò)展.

到此這篇關(guān)于Java建造者模式構(gòu)建復(fù)雜對象的最佳實踐的文章就介紹到這了,更多相關(guān)Java建造者模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 輕松掌握java裝飾者模式

    輕松掌握java裝飾者模式

    這篇文章主要幫助大家輕松掌握java裝飾者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot整合Redisson的步驟(單機(jī)版)

    SpringBoot整合Redisson的步驟(單機(jī)版)

    Redisson非常適用于分布式鎖,而我們的一項業(yè)務(wù)需要考慮分布式鎖這個應(yīng)用場景,于是我整合它做一個初步簡單的例子(和整合redis一樣)。
    2021-05-05
  • Idea中指定xml文件失效的解決過程

    Idea中指定xml文件失效的解決過程

    最近在開發(fā)的過程中遇到了一個奇怪的問題,下面這篇文章主要給大家介紹了關(guān)于Idea中指定xml文件失效的解決過程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 解決java調(diào)用python代碼返回值中文亂碼問題

    解決java調(diào)用python代碼返回值中文亂碼問題

    這篇文章主要介紹了解決java調(diào)用python代碼返回值中文亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)

    使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)

    這篇文章主要介紹了使用IDEA搭建SSM框架的詳細(xì)教程 spring + springMVC +MyBatis,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 了解spring中的CloudNetflix Hystrix彈性客戶端

    了解spring中的CloudNetflix Hystrix彈性客戶端

    這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠(yuǎn)程服務(wù)發(fā)生錯誤或表現(xiàn)不佳時保護(hù)遠(yuǎn)程資源(另一個微服務(wù)調(diào)用或者數(shù)據(jù)庫查詢)免于崩潰。,需要的朋友可以參考下
    2019-06-06
  • 詳解Java中LinkedHashMap

    詳解Java中LinkedHashMap

    本文主要介紹了Java中LinkedHashMap的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • Java Web 簡單的分頁顯示實例代碼

    Java Web 簡單的分頁顯示實例代碼

    這篇文章主要介紹了Java Web 簡單的分頁顯示實例代碼的相關(guān)資料,本文通過,計算總的頁數(shù)和查詢指定頁數(shù)據(jù)兩個方法實現(xiàn)分頁效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Java局部內(nèi)部類和匿名內(nèi)部類定義與用法實例分析

    Java局部內(nèi)部類和匿名內(nèi)部類定義與用法實例分析

    這篇文章主要介紹了Java局部內(nèi)部類和匿名內(nèi)部類,結(jié)合實例形式分析了java局部內(nèi)部類和匿名內(nèi)部類相關(guān)定義、原理與用法,需要的朋友可以參考下
    2019-08-08
  • Spring?@Cacheable讀取配置常量方式

    Spring?@Cacheable讀取配置常量方式

    這篇文章主要介紹了Spring?@Cacheable讀取配置常量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

新干县| 永福县| 印江| 日土县| 和顺县| 丰台区| 房山区| 桂阳县| 封丘县| 错那县| 桑日县| 芜湖县| 乌拉特后旗| 濮阳市| 巫溪县| 象山县| 佳木斯市| 竹北市| 宜兰市| 陕西省| 武穴市| 新闻| 南靖县| 平果县| 安福县| 利津县| 文山县| 新民市| 许昌市| 五台县| 上高县| 绥棱县| 深水埗区| 新乡县| 松原市| 库伦旗| 贺兰县| 桐梓县| 昭觉县| 张北县| 综艺|