定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
使用场景
(1) 相同的方法,不同的执行顺序,产生不同的事件结果时
(2) 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不同时
(3) 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适
(4) 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时
优缺点
优点:良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节;建造者独立,容易扩展
缺点:会产生多余的Builder对象以及Director对象,消耗内存
简单实现
public class People {
private int age;
private int sex;
private String name;
private String email;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public static class Builder{
private People people = new People();
public Builder buildName(String name){
people.setName(name);
return this;
}
public Builder buildAge(int age){
people.setAge(age);
return this;
}
public Builder buildSex(int sex){
people.setSex(sex);
return this;
}
public Builder buildEmail(String email){
people.setEmail(email);
return this;
}
public People create(){
return people;
}
}
}