# 建造者模式
Builder Pattern
## 建造者-指挥者
这是经典的建造者-指挥者模式,虽然现在不常用了,还是看一下。
四个角色:
1) Product(产品角色): 一个具体的产品对象。
2) Builder(抽象建造者): 创建一个 Product 对象的各个部件指定的 **接口/抽象类**。
3) ConcreteBuilder(具体建造者): 实现接口,构建和装配**各个部件**。
4) Director(指挥者): 构建一个使用 Builder 接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。
```java
//产品->Product
public class House {
private String baise;
private String wall;
private String roofed;
public String getBaise() {return baise;}
public void setBaise(String baise) {this.baise = baise;}
public String getWall() {return wall;}
public void setWall(String wall) {this.wall = wall;}
public String getRoofed() {return roofed;}
public void setRoofed(String roofed) {this.roofed = roofed;}
}
// 抽象的建造者
public abstract class HouseBuilder {
protected House house = new House();
//将建造的流程写好, 抽象的方法
public abstract void buildBasic();
public abstract void buildWalls();
public abstract void roofed();
//建造房子好, 将产品(房子) 返回
public House buildHouse() {return house;}
}
//普通房子
public class CommonHouse extends HouseBuilder {
@Override
public void buildBasic() {System.out.println(" 普通房子打地基5米 ");}
@Override
public void buildWalls() {System.out.println(" 普通房子砌墙10cm ");}
@Override
public void roofed() {System.out.println(" 普通房子屋顶 ");}
}
//高楼
public class HighBuilding extends HouseBuilder {
@Override
public void buildBasic() {System.out.println(" 高楼的打地基100米 ");}
@Override
public void buildWalls() {System.out.println(" 高�