sample:
public class User {
private String name;
private int age;
...
public User(Builder builder) {
this.name = builder.name;
...
}
...
public class Builder {
private String name;
private int age;
...
public Builder name(String name) {
this.name = name
}
...
public User build() {
return new User(this);
}
}
}
new User.Builder().name("王五").age(20) .phone("123456789") .address("亚特兰蒂) .build();
设计初衷:
public User(String firstName, String lastName, int age, String phone, String address)
一般设计类的构造函数进行实例化,属性越多意味设计更多的构造的函数来应对所有情况。
或者使用一个基本构造函数,其他属性通过get,set操作(属性public化)。
那如何既想一条语句完成创建对象,有不想创建后被修改属性?
Builder模式将一个类的实例话完全交给了Builder,自己属性和构造函数全部隐藏为private。
划重点:
1.具体Class中只有一个Builder为参数的构造函数
2.Builder的属性与具体Class的属性完全吻合
3.Builder采用链式调用
网友评论