一文帶你了解建造者模式及相關實例解析

Dream城堡 2022-01-07 18:02:43 阅读数:935

一文 了解 建造 模式 解析
1.簡介

The builder pattern is a design pattern designed to provide a flexible solution to various object creation problems in object-oriented programming. The intent of the Builder design pattern is to separate the construction of a complex object from its representation. (builder模式是一種設計模式,旨在為面向對象編程中的各種對象創建問題提供靈活的解决方案。Builder設計模式的目的是將複雜對象的構造與其錶示分離開來。) – 引用自維基百科

​ Builder設計模式的目的是將複雜對象的構造與其錶示分離開來。通過這樣做,相同的構造過程可以創建不同的錶示

2.建造模式利弊

優點:

  • 允許您更改產品的內部錶示。
  • 封裝用於構造和錶示的代碼。
  • 控制施工過程的各個步驟。

缺點:

  • 需要為每個不同類型的產品創建一個單獨的ConcreteBuilder。
  • 要求構造器類是可變的。
  • 不能保證類的數據成員被初始化。
  • 依賴性注入可能不太受支持。
3.相關實例

​ 這裏我們舉個造房子的例子,構建一個房子需要相應的建造團隊和總指揮,我們把相關構建的內容封裝起來,在調用的時候就可以獲得一個完整的房子對象。

import com.test.afirst.month_12.day1219.builder.person.Director;
import com.test.afirst.month_12.day1219.builder.person.Product;
import lombok.Data;
/**
*
*/
@Data
class House {
/**
* 屋頂
*/
private String roof;
/**
* 橫梁
*/
private String beam;
/**
* 地基
*/
private String foundation;
}
abstract class Builder {
protected House house = new House();
abstract void buildRoof();
abstract void buildBeam();
abstract void buildFoundation();
public House getHouse() {
return house;
}
}
class TeamBuilder extends Builder {
public TeamBuilder() {
}
public TeamBuilder(House house) {
this.house = house;
}
@Override
void buildRoof() {
System.out.println("構建屋頂");
house.setRoof("漂亮的屋頂");
}
@Override
void buildBeam() {
System.out.println("構建橫梁");
house.setBeam("結實的橫梁");
}
@Override
void buildFoundation() {
System.out.println("構建地基");
house.setFoundation("穩固的地基");
}
}
class Contractor {
private Builder builder;
public Contractor(Builder builder) {
this.builder = builder;
}
public void buildHouse() {
builder.buildFoundation();
builder.buildBeam();
builder.buildRoof();
}
}
public class HouseBuilderDemo {
public static void main(String[] args) {
Builder builder = new TeamBuilder();
Contractor contractor = new Contractor(builder);
contractor.buildHouse();
House house = builder.getHouse();
System.out.println(house);
}
}
輸出結果:
構建地基
構建橫梁
構建屋頂
House(roof=漂亮的屋頂, beam=結實的橫梁, foundation=穩固的地基)
版权声明:本文为[Dream城堡]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071802430858.html