builder模式:对于复杂的对象创建,可以将创建过程封装为对象。
abstractbuilder:抽象类,定义创建对象各个部分的方法
concretebuilder:抽象类的具体实现,实现创建对象各个部分的细节
例如盖房子,需要砌墙,装防盗门,装玻璃等,属于盖房子的一部分。
class House(){
private String wall;
private String door;
private String glass;
public void setWall(String wall){
this.wall=wall;
}
public void setDoor(String door){
this.door=door;
}
public void setGlass(String glass){
this.glass=glass;
}
}
abstract class AbstractBuilder{
private House house;
void addWall();
void addDoor();
void addGlass();
House build();
}
class ConcreteBuilder(){
private House house;
void addWall(String wall){
house.setwall(wall);
}
void addDoor(String door){
house.setdoor(door);
}
void addGlass(String glass){
house.setglass(glass);
}
//创建好对象后,返回
public House build(){
return house;
}
}
//具体的调用者
class Caller{
private AbstractBuilder builder;
Caller(AbstractBuilder builder){
this.builder=builder;
}
//调用该方法,完成房屋构建
public void create(){
builder.addWall(wall);
builder.addDoor(door);
builder.addGlass(glass);
}
}