变种建造者模式
由于变种建造者模式经常见到所以在这里只讲解该模式。
需求:今天Boss突然跑过来扔了一个需求给你:需要创建一个不可变的Person对象,这个Person可以拥有以下几个属性:名字、性别、年龄、车、钱、房子。其中名字和性别是必须有的。
结果:
public class Person {
// 由于对象是不可变的,所以对象的每一个属性都是final
// 名字
private final String name;
// 性别
private final String sex;
// 年龄
private final Integer age;
// 车
private final String car;
// 钱
private final Double money;
// 房子
private final String house;
private Person(Builder builder){
this.name = builder.name;
this.sex = builder.sex;
this.age = builder.age;
this.car = builder.car;
this.house = builder.house;
this.money = builder.money;
}
public static class Builder{
// 名字和性别是必须有的,所以是final,其余是可选的
private final String name;
private final String sex;
private Integer age;
private String car;
private Double money;
private String house;
public Builder(String name,String sex){
this.name = name;
this.sex = sex;
}
public Builder age(Integer age){
this.age = age;
return this;
}
public Builder car(String car){
this.car = car;
return this;
}
public Builder money(Double money){
this.money = money;
return this;
}
public Builder house(String house){
this.house = house;
return this;
}
public Person build(){
return new Person(this);
}
}
}
测试代码:
public static void main(String[] args) {
Person person = new Builder("张三","男")
.age(30)
.car("BMW")
.money(123456789D)
.house("别墅").build();
}