Java建造者模式構建復雜對象的最佳實踐
介紹
Java中的建造者模式是一種創(chuàng)建型設計模式,它的主要目的是為了通過一系列簡單的步驟構建復雜的對象,允許創(chuàng)建復雜對象的不同表示形式,同時隱藏構造細節(jié).它能夠逐步構建對象,即先創(chuàng)建基本對象,然后逐步添加更多屬性或部件,直到最終構建出完整的對象.
該模式的主要思想是將對象的構造過程分解成多個步驟,每個步驟都可以獨立運行,并且在每個步驟完成后都可以返回一個中間狀態(tài),然后使用一個導演類來協(xié)調這些步驟,最終創(chuàng)建出完整的對象.
建造者模式通常包括一下角色:
- 產(chǎn)品類(Product):被構造出來的復雜對象,它具有多個屬性或部件.
- 抽象構造者類(Builder):定義了構建復雜對象所需的方法和屬性.
- 具體建造者類(ConcreteBuilder):實現(xiàn)抽象建造者類中定義的方法和屬性,并返回最終構造的對象
- 導演類(Director):負責協(xié)調各個具體建造者類的構建過程,以及返回最終構造的對象,
實現(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)建具體構造者類
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);
}
}創(chuàng)建導演類
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());
}
}
總結
優(yōu)點:
- 簡化對象創(chuàng)建的過程:建造者模式可以將對象的構造過程分解為多個步驟,使得對象的創(chuàng)建變得簡單明了,易于維護和擴展
- 提高可讀性:由于每個構建步驟都有一個明確的名稱,因此代碼更具有可讀性和可維護性.
- 靈活性:建造者模式允許您根據(jù)需要使用不同的構建起創(chuàng)建不同的對象,從而提高了靈活性和可重用性.
缺點:
- 建造者模式需要創(chuàng)建多個對象,因此可能會增加系統(tǒng)的內存開銷.
- 由于建造者模式需要編寫多個類,因此可能會增加代碼量和復雜性.
應用場景:
- 當對象需要多個步驟才能創(chuàng)建時,可以使用建造者模式
- 當需要創(chuàng)建多個不同的對象時,可以使用建造者模式,每個對象的構造過程可以由不同的構建器來完成
- 當對象的構造過程非常復雜或需要進行多項配置時,可以使用建造者模式
- 總的來說,建造者模式非常適合創(chuàng)建復雜的對象,并且使代碼更加靈活和已于擴展.
到此這篇關于Java建造者模式構建復雜對象的最佳實踐的文章就介紹到這了,更多相關Java建造者模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用IDEA搭建SSM框架的詳細教程(spring + springMVC +MyBatis)
這篇文章主要介紹了使用IDEA搭建SSM框架的詳細教程 spring + springMVC +MyBatis,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
了解spring中的CloudNetflix Hystrix彈性客戶端
這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠程服務發(fā)生錯誤或表現(xiàn)不佳時保護遠程資源(另一個微服務調用或者數(shù)據(jù)庫查詢)免于崩潰。,需要的朋友可以參考下2019-06-06

