本质——简化对象创建的编码
一、what
创建复杂对象的一种方式。
二、why
简化了对象创建的步骤
提升了代码可读性
对象的创建过程和表示分离
三、how
/**
* @Description: 建造者模式
* @date 2018-02-17 21:22
*/
@ToString
@Getter
@Setter
public class Person {
private final String name;
private int age;
private String sex;
private String father;
private String mather;
public static class Builder {
private final String name;
private int age;
private String sex;
private String father;
private String mather;
public Builder(String name) {
this.name = name;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder sex(String sex) {
this.sex = sex;
return this;
}
public Builder mather(String mather) {
this.mather = mather;
return this;
}
public Builder father(String father) {
this.father = father;
return this;
}
public Person Build(){
return new Person(this);
}
}
private Person(Builder builder){
this.name = builder.name;
this.sex = builder.sex;
this.father = builder.father;
this.mather = builder.mather;
this.age = builder.age;
}
}
public static void main(String[] args) throws IOException {
Person person = new Person.Builder("张三").sex("男").age(23).Build();
System.out.println(person);
}
简单版
@Setter
@Getter
@ToString
public class Schema {
/**
* 意图
*/
@NonNull
private String intent;
/**
* 分数
*/
private int score;
public Schema buildIntent(String intent){
this.intent = intent;
return this;
}
public Schema buildScore(int score){
this.score = score;
return this;
}
}