首頁  >  文章  >  Java  >  怎麼使用Java建造者模式建構複雜對象

怎麼使用Java建造者模式建構複雜對象

WBOY
WBOY轉載
2023-05-10 13:34:121384瀏覽

介紹

Java中的建造者模式是一種創建型設計模式,它的主要目的是為了透過一系列簡單的步驟建構複雜的物件,允許創建複雜物件的不同表示形式,同時隱藏構造細節.它能夠逐步構建對象,即先創建基本對象,然後逐步添加更多屬性或部件,直到最終構建出完整的對象.

該模式的主要思想是將對象的構造過程分解成多個步驟,每個步驟都可以獨立運行,並且在每個步驟完成後都可以返回一個中間狀態,然後使用一個導演類來協調這些步驟,最終創建出完整的對象.

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

  • 產品類別(Product):被建構出來的複雜物件,它具有多個屬性或元件.

  • 抽象建構者類別(Builder):定義了建構複雜物件所需的方法與屬性.

  • 具體建造者類別(ConcreteBuilder):實作抽象建造者類別中定義的方法與屬性,並傳回最終建構的物件

  • 導演類別(Director):負責協調各個具體建造者類別的建構過程,以及傳回最終建構的物件,

實作

先建立一個產品類別

package com.fanqiechaodan.build;
import lombok.Data;
/**
 * @Classname Car
 * @Description 产品类
 */
@Data
public class Car {
    private String brand;
    private String model;
    private String color;
    private int maxSpeed;
}

#再建立抽象建造者類別

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;
    }
}

然後建立具體建構者類別

package com.fanqiechaodan.build;
/**
 * @Classname BMWBuilder
 * @Description 具体构造者类
 */
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);
    }
}

建立導演類別

package com.fanqiechaodan.build;
/**
 * @Classname Director
 * @Description 导演类
 */
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建造者模式建構複雜對象

#

以上是怎麼使用Java建造者模式建構複雜對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除