定義
將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
使用場景
(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;
}
}
}