两种写法:
//一个Builder对应一个对象,build之前已经创建好对象
class Builder {
private Person person = new Person();
public void name(String name) {
person.name = name;
}
public void build() {
return person;
}
}
//一个Builder可以用于创建多个对象,
class Builder {
private String name;
public void name(String name) {
this.name = name;
}
public void build() {
//把Builder传进去,构造函数中取属性赋值
return new Person(this);
}
}
问题:
- 多个参数,创建对象的时候不知道每个参数顺序和具体含义,可读性较差。
- 如果参数可选,需要写多个构造函数。
- build之前可以随时进行添加,不用一次性创建完毕
Kotlin、Dart、Python等语言支持命名参数,可选参数,能解决第一个和第二个问题
实例
Android对话框AlertDialog.Builder
OkHttp的Request.Builder