1.概述。将一个复杂对象的创建与它的表示分离,使得同样的创建过程可以创建不同的表示。
2。实用性:
a).当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
b).当构造过程必须允许被构造的对象有不同的表示时
3。参与者。
a)Builder 为创建一个product 对象的各个部件指定抽象接口.
b)ConcreateBuilder实现Builder的接口和装配该产品的各个部件。
c)Director 构造一个使用Builder接口的对象
d)Product表示被构造的复杂对象.
4。代码如下:
package test;
public class House {
//屋顶
private String top;
//墙壁
private String wall;
//地板
private String floor;
public String getTop() {
return top;
}
public void setTop(String top) {
this.top = top;
}
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
}
package test;
public interface HouseBuilder {
void builderTop();
void builderWall();
void builderFloor();
House getHouse();
}
package test;
public class GongyuBuilder implements HouseBuilder {
private House house = new House();
public void builderFloor() {
house.setFloor("公寓:创建地板");
}
public void builderTop() {
house.setTop("公寓:创建屋顶");
}
public void builderWall() {
house.setWall("公寓: 创建墙壁");
}
public House getHouse() {
return house;
}
}
package test;
public class HouseDirector {
public static House buildHouse(HouseBuilder houseBuilder){
houseBuilder.builderTop();
houseBuilder.builderWall();
houseBuilder.builderFloor();
return houseBuilder.getHouse();
}
}
package test;
public class MainClass {
public static void main(String[] args) {
HouseBuilder houseBuilder = new GongyuBuilder();
House house = HouseDirector.buildHouse(houseBuilder);
System.out.println(house.getTop());
System.out.println(house.getWall());
System.out.println(house.getFloor());
}
}