//产品类
public class Product {
String window;
String floor;
String door;
public String getWindow() {
return window;
}
public void setWindow(String window) {
this.window = window;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getDoor() {
return door;
}
public void setDoor(String door) {
this.door = door;
}
public Product() {
System.out.println("建造一个房子:");
}
public void work(String s) {
System.out.println(s);
}
}
//抽象的生成器
public abstract class Builder {
abstract public void builderWindow();
abstract public void builderDoor();
abstract public void builderFloor();
public Product getRoom() {
return null;
}
}
//生成器的具体实现
public class ConcreteBuilder extends Builder{
Product room = new Product();
@Override
public void builderDoor() {
// TODO Auto-generated method stub
room.setDoor("修门");
}
@Override
public void builderFloor() {
// TODO Auto-generated method stub
room.setFloor("修地板");
}
@Override
public void builderWindow() {
// TODO Auto-generated method stub
room.setWindow("修窗户");
}
public Product getRoom() {
return room;
}
}
//向导器,封装了整个操作
public class Director {
public void makeRoom(Builder builder) {
builder.builderDoor();
builder.builderFloor();
builder.builderWindow();
}
}
//测试类
public class Client {
public static void main(String[] args) {
Director dir = new Director();
Builder b = new ConcreteBuilder();
dir.makeRoom(b);
Product p = b.getRoom();
p.work(p.getDoor());
p.work(p.getFloor());
p.work(p.getWindow());
}
}