一:Builder模式介绍
Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道的内部构建细节的情况下,可以更精确地控制对象的构造流程。该模式是为了将复杂对象的过程全部解耦。使得构建过程和部件的表示隔离开。在项目中我们经常可以看到例如:AlertDialog、Glide等。
二:Builder模式使用场景
1.相同的方法,不同的执行顺序,会产生不同的事件结构。
2.多个功能,都可以装到一个对象中,产生的运行结果又各不相同。
3.当初始化一个特别复杂,如参数多,并且很多参数都具有默认值。
三:Builder模式总结
Builder模式在Android中比较为常用,通常作为配置类的构建器将配置的构建和表示分离开来,同时也是将配置从目标类中隔离出来,避免过多的set方法。
优点:良好的封装性,使用建造者模式可以使客户的不必知道产品内部组成细节。建造者独立,容易扩展,方便维护。
缺点:会产生多余的Builder对象以及Director对象,消耗内存。
四:Builder模式开发示例
public class BuilderPerson {
//这里有4个参数
private String name;
private String password;
private String age;
private String id;
//私有的,调用者不能直接创建BuilderPerson对象
private BuilderPerson(BuilderProject builderProject){
this.name=builderProject.name;
this.password=builderProject.password;
this.age=builderProject.age;
this.id=builderProject.id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/** 内部类,这里面可以自己定义,如果我想账号和密码必须使用,所以构造方法里面写参数,用final修饰*/
public static class BuilderProject {
private final String name;
private final String password;
private String age;
private String id;
public BuilderProject(String name, String password){
this.name=name;
this.password=password;
}
public BuilderProject age(String age){
this.age(age);
return this;
}
public BuilderProject id(String id){
this.id(id);
return this;
}
public BuilderPerson build(){
return new BuilderPerson(this);
}
}
}
//Builder模式,这里多个参数根据项目要求可以自己配置
new BuilderPerson.BuilderProject("name","password")
.age("男")
.id("124563")
.build();