最近看HDFS源码,看到写副本时,ReplicaInfo类使用到了build设计模式,所以整理这篇文章,加深对builder设计模式的了解。
提出问题
当一个业务复杂的类包含多个属性时,如果我们想要创建实例对象时,就必须定义构造器,针对属性的可选性,我们的类可能变得如下:
public class User {
private final String name;
private final int age;
private final int money;//可选
private final int girlFriend;//可选
private final int car;//可选
public User(String name, int age, int money, int girlFriend,int car) {
this.name = name;
this.age = age;
this.money = money;
this.girlFriend = girlFriend;
this.car = car;
}
public User(String name, int age, int money,int girlFriend) {
this(name,age,money,girlFriend,0);
}
public User(String name, int age, int money) {
this(name,age,money,0,0);
}