public class xxxConfig{
//須要設置的字段 private String mName; private String mPossword;
public static class Build{
//須要設置的字段 private String mName; private String mPossword;
private xxxConfig(){}
private Build setName(String name){
mName = name;
return this;
}
public Build setPossword(String password){
mPassword = password;
return this;
}
public void applyConfig(xxxConfig config){
config.mName = this.mName;
config.mPassword = this.mPassword;
}
public xxxConfig create(){
xxxConfig config = new xxxConfig();
applyConfig(config);
return config;
}
}
}
class xxx{ private xxxConfig mConfig;
public void init(xxxConfig config){
mConfig = config;
//檢測config的合法性,作一些初始化操做
checkConfig();
}
private void checkConfig(){
if(mConfig.mName != null){
//使用name的具體操做
}
}
}
調用:
xxxConfig config = xxxConfig.Build.setName("tom").setPassword("123").create();
new xxx().init(config);
一、須要生成的產品對象有複雜的內部結構。
二、須要生成的產品對象的屬性相互依賴,建造者模式能夠強迫生成順序。
三、在對象建立過程當中會使用到系統中的一些其它對象,這些對象在產品對象的建立過程當中不易獲得。app
1.良好的封裝性,能夠使客戶端沒必要知道產品內部組成的細節。ui
2.獨立,容易擴展this
產生多餘的Builder對象以及Director對象,消耗內存。對象