定义:使用多个简单的对象构建成一个复杂的对象。
个人理解:讲一个整体的各个部分组合到一起,例如一个人有年龄、身高等属性,统计信息时可能会用到这个人某几个属性,那么需要什么就把什么组合到一起。
UML图解:
优点:建造者建造自己的东西,也可扩展。
缺点:当内部比较复杂的时候,就会对应的建造很多类。
代码:
public class Person {
int id;
String name;
int age;
double weight;
int score;
Location loc;
private Person() {}
public static class PersonBuilder {
Person p = new Person();
//基本属性(需要什么拿什么,进行建造)
public PersonBuilder basicInfo(int id, String name, int age) {
p.id = id;
p.name = name;
p.age = age;
return this;
}
public PersonBuilder weight(double weight) {
p.weight = weight;
return this;
}
public PersonBuilder score(int score) {
p.score = score;
return this;
}
public PersonBuilder loc(String street, String roomNo) {
p.loc = new Location(street, roomNo);
return this;
}
public Person build() {
return p;
}
}
}
class Location {
String street;
String roomNo;
public Location(String street, String roomNo) {
this.street = street;
this.roomNo = roomNo;
}
}
public class Main {
public static void main(String[] args) {
//建造一个人,需要什么属性就加什么方法
Person p = new Person.PersonBuilder()
.basicInfo(1, "zhangsan", 18)
//.score(20)
.weight(200)
//.loc("bj", "23")
.build();
}
}
总结:这个模式和工厂模式有些相似,但是它比较关注与零件装配的顺序。当一个对象内部结构比较复杂的时候,或者内部的属性本身相互依赖,可以用这个模式。