- 首先为什么会有这种模式?
- 这种模式的好处在于什么地方?
- 这种模式的特点是什么?
对比多参数的构造函数,builder构造函数少了层层嵌套、设置参数默认值、对于增删参数,无需一层层修改。
对于与工厂模式,工厂模式只是封装出具体的工厂方法,本质还是重载构造函数。
对比与JavaBean模式,set方法破坏了Bean的完整性,使得程序可以随意修改内容。
Builder 模式例子
public class Configuration {
private String username;
private String password;
private String url;
public Configuration(String username, String password, String url) {
this.username = username;
this.password = password;
this.url = url;
}
public static ConfigurationBuilder builder() {
return new ConfigurationBuilder();
}
public static class ConfigurationBuilder {
private String username;
private String password;
private String url;
ConfigurationBuilder() {
}
public ConfigurationBuilder username(String username) {
this.username = username;
return this;
}
public ConfigurationBuilder password(String password) {
this.password = password;
return this;
}
public ConfigurationBuilder url(String url) {
this.url = url;
return this;
}
public Configuration build() {
// can some check
return new Configuration(this.username, this.password, this.url);
}
public String toString() {
return new StringBuilder().append((String)"Configuration.ConfigurationBuilder(username=").append((String)this.username).append((String)", password=").append((String)this.password).append((String)", url=").append((String)this.url).append((String)")").toString();
}
}
}
PS: 若你觉得可以、还行、过得去、甚至不太差的话,可以“关注”一下,就此谢过!
网友评论