使用場景:如果一個類的構(gòu)造需要很多參數(shù)兆解,但這些參數(shù)又不都是必須的。
Android開發(fā)中經(jīng)常使用的例子
new AlertDialog.Builder(this)
.setTitle("Design Patterns")
.setMessage("Builder is awesome")
.create();
實踐
- 假如一個User類定義如下
public class User {
private String firstName;
private String lastName;
private int age;
}
- 若想使用如下方法構(gòu)建
new User.Builder()
.setFirstName("Leonardo")
.setLastName("da Vinci")
.setAge(67)
.create();
- 內(nèi)部構(gòu)建一個Builder類
static class Builder {
private String firstName;
private String lastName;
private int age;
public Builder setFirstName(final String firstName) {
this.firstName = firstName;
return this;
}
public Builder setLastName(final String lastName) {
this.lastName = lastName;
return this;
}
public Builder setAge(final int age) {
this.age = age;
return this;
}
public User create() {
return new User(this);
}
}
- User類修改為
public class User {
private String firstName;
private String lastName;
private int age;
private User(final Builder builder) {
firstName = builder.firstName;
lastName = builder.lastName;
age = builder.age;
}
}