定義
建造者模式(Builder Pattern):將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
類圖
建造者模式包含如下角色:
- Builder:抽象建造者
- ConcreteBuilder:具體建造者
- Director:指揮者
- Product:產品角色
擴展
建造者模式的簡化:
- 省略抽象建造者角色:如果系統中只需要一個具體建造者的話,可以省略掉抽象建造者。
- 省略指揮者角色:在具體建造者只有一個的情況下,如果抽象建造者角色已經被省略掉,那麼還可以省略指揮者角色,讓Builder角色扮演指揮者與建造者雙重角色。
代碼
簡化模式:
public class Room {
private String window;
private String floor;
private Room() {
}
public String getWindow() {
return window;
}
public String getFloor() {
return floor;
}
@Override
public String toString() {
return "---->floor " + floor + " window " + window;
}
public static class Builder {
private final RoomParams params;
public Builder() {
params = new RoomParams();
}
public Builder makeWindow(String window) {
params.window = window;
return this;
}
public Builder makeFloor(String floor) {
params.floor = floor;
return this;
}
/**
* 構建
*/
public Room builder() {
Room room = new Room();
params.apply(room);
return room;
}
private class RoomParams {
private String window;
private String floor;
/**
* 按特定順序組裝
*/
private void apply(Room room) {
room.window = window;
room.floor = floor;
}
}
}
}
調用過程:
Room room = new Room.Builder()
.makeWindow("藍色玻璃")
.makeFloor("白色地板")
.builder();