// 产品(Product)角色
// 首先是房子类,主要是需要描述一下房屋属性
public classRoom{
private Stringwindow;
private Stringfloor;
}
// 建造者(Builder)角色
// 工人接口,定义了各个工人所要进行的工作。负责进行具体部件如窗户,地板的建造。
// 同时因为房子是民工建的,因此建设完成后由他把房子递交回房主
publicinterface Builder {
public voidmakeWindow();
public voidmakeFloor();
public RoomgetRoom();
}
// 指导者(Director)角色
// 设计师。他知道房子应该怎么设计,但他不会自己去建造,而是指挥工人建造。
public classDesigner {
// 指挥民工进行工作
public voidorder(Builder builder) {
builder.makeWindow();
builder.makeFloor();
}
}
// 具体建造者(Concrete Builder)角色
// 工人, 负责进行具体部件如窗户,地板的建造。
public classWorker implements Builder {
private Roomroom = new Room();
public voidmakeWindow() {
room.window=new String("window");
}
public voidmakeFloor(){
room.floor =new String("floor");
}
// 回交房子给房主
public RoomgetRoom() {
return room;
}
}
// 我获取房子的流程
public classClient {
public staticvoid main(String[] args) {
Builder worker= new Worker(); //获取工人对象
Designerdesigner = new Designer(); //获取设计师对象
designer.order(worker); //设计师指挥工人工作
worker.getRoom(); //工人交房
}
}
优点
- 良好的封装性, 使用建造者模式可以使客户端不必知道产品内部组成的细节。
- 每一个Builder都相对独立,而与其它的Builder无关。
- 可使对构造过程更加精细控制。
- 将构建代码和表示代码分开。
更为详尽的知识:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html