溫馨提示×

溫馨提示×

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

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

怎么使用Java建造者模式構(gòu)建復(fù)雜對象

發(fā)布時間:2023-05-05 14:36:52 來源:億速云 閱讀:108 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“怎么使用Java建造者模式構(gòu)建復(fù)雜對象”,在日常操作中,相信很多人在怎么使用Java建造者模式構(gòu)建復(fù)雜對象問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Java建造者模式構(gòu)建復(fù)雜對象”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

介紹

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

該模式的主要思想是將對象的構(gòu)造過程分解成多個步驟,每個步驟都可以獨立運行,并且在每個步驟完成后都可以返回一個中間狀態(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());
    }
}

怎么使用Java建造者模式構(gòu)建復(fù)雜對象

到此,關(guān)于“怎么使用Java建造者模式構(gòu)建復(fù)雜對象”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

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

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

AI