定义
建造者模式(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();