一:相关定义
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
二:相关类图和示例
建造者模式类图:
下面通过示例来说明这个模式
建造者模式示例:
使用关键的代码来进行说明如下:
Product类——产品类,由多个部门组成。
class Person{
private String head;
private String body;
//...
public void setHead(String head){
this.head = head;
}
public void setBody(String body){
this.body = body;
}
//...
public void show(){
System.out.println(head+body+"...");
}
}
Builder类——抽象建造者类。
abstract class PersonBuilder{
public abstract void buildHead();
public abstract void buildBody();
public abstract Person getResult();
}
ConcreteBuilder类——具体建造者类。
class PersonThinBuilder{
private Person person = new Person();
public void buildHead(){
person.setHead("瘦瘦的头");
}
public void buildBody(){
person.setBody("瘦瘦的身体");
}
public Person getResult(){
return person;
}
}
class PersonFatBuilder{
private Person person = new Person();
public void buildHead(){
person.setHead("胖胖的头");
}
public void buildBody(){
person.setBody("胖胖的身体");
}
public Person getResult(){
return person;
}
}
Director类——指挥者类。
class PersonDirector{
public void createPerson(PersonBuilder pb){
pb.buildHead();
pb.buildBody();
//...
}
}
客户端代码,不需要知道具体的建造过程。
PersonDirector director = new PersonDirector();
PersonBuilder b1 = new PersonThinBuilder();
PersonBuilder b2 = new PersonFatBuilder();
director.createPerson(b1);
Person p1 = b1.getResult();
p1.show();
director.createPerson(b2);
Person p2 = b2.getResult();
p2.show();
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。有点抽象,拿创建一个游戏人物来说吧,要完成创建过程,需要一系列固定部位的创建,例如:头部、身体、左手、右手、左腿、右腿;而且,创建时还要根据需求进行变化,例如一个人高,一个低,一个胖,一个瘦;因此,需要一种灵活可变更的方式来实现创建。建造者模式就为我们提供了这样的方式,这个还需要好好体会,模式在什么时候适用于哪种场景这点不容易把握。
参考书籍:《大话设计模式》