Builder模式的定义是:[b]将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。[/b] 首先它意图是要构建一个复杂的对象,而这个复杂的对象往往需要由好几个子对象或分步聚来完成最终的这个对象的构建,而这个复杂对象的子对像经常需要不断的变化,但它的构建过程是相对是稳定的。
在构造一个对象的时候,往往有很多复杂的过程和次序,例如建造一个机器人,那要先造头,还是要先造身子,这就关乎到一个制造工序的问题。其实建造者模式和工厂模式是很接近的,但是,建造者模式提供了一个更加细粒度的对象的建造过程。对应的UML图如下:
[img]http://dl.iteye.com/upload/attachment/0077/9640/98473c79-fc37-38d7-acbc-709797156ef0.png[/img]
首先,我们要先创建一个需要建造的对象。
//要构造的对象
public class Robust {
String head;
String body;
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
然后有一个构造者的接口,其中包括了建造者会使用的建造过程。
public interface Builder {
public void buidBody(String body);
public void voidHead(String head);
public Robust getRobust();
}
public class RobustBuilder implements Builder {
Robust robust = new Robust();
@Override
public void buidBody(String body) {
// TODO Auto-generated method stub
robust.setBody(body);
}
@Override
public void voidHead(String head) {
// TODO Auto-generated method stub
robust.setHead(head);
}
@Override
public Robust getRobust() {
// TODO Auto-generated method stub
return robust;
}
}
有了建造者之后,需要有一个指挥家来指示建造的过程。
//指挥建造的类
public class Director {
public Robust Construct(Builder builder){
builder.buidBody(null);
builder.buidBody(null);
return builder.getRobust();
}
}
这样,我们只要构造不同的构造者,就会有不同的建造过程。
在构造一个对象的时候,往往有很多复杂的过程和次序,例如建造一个机器人,那要先造头,还是要先造身子,这就关乎到一个制造工序的问题。其实建造者模式和工厂模式是很接近的,但是,建造者模式提供了一个更加细粒度的对象的建造过程。对应的UML图如下:
[img]http://dl.iteye.com/upload/attachment/0077/9640/98473c79-fc37-38d7-acbc-709797156ef0.png[/img]
首先,我们要先创建一个需要建造的对象。
//要构造的对象
public class Robust {
String head;
String body;
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
然后有一个构造者的接口,其中包括了建造者会使用的建造过程。
public interface Builder {
public void buidBody(String body);
public void voidHead(String head);
public Robust getRobust();
}
public class RobustBuilder implements Builder {
Robust robust = new Robust();
@Override
public void buidBody(String body) {
// TODO Auto-generated method stub
robust.setBody(body);
}
@Override
public void voidHead(String head) {
// TODO Auto-generated method stub
robust.setHead(head);
}
@Override
public Robust getRobust() {
// TODO Auto-generated method stub
return robust;
}
}
有了建造者之后,需要有一个指挥家来指示建造的过程。
//指挥建造的类
public class Director {
public Robust Construct(Builder builder){
builder.buidBody(null);
builder.buidBody(null);
return builder.getRobust();
}
}
这样,我们只要构造不同的构造者,就会有不同的建造过程。