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);
使用场景:
1、需要生成的产品对象有复杂的内部结构。
2、需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
3、在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
优点:
1.良好的封装性,可以使客户端不必知道产品内部组成的细节。
2.独立,容易扩展
缺点:
产生多余的Builder对象以及Director对象,消耗内存。