需求:
当创建某一个对象的时候,必须按照的一定的顺序对成员变量进行初始化,所以为了避免用户在创建的时候打乱这个顺序,就有了Builder设计模式。非常简单有效,这种模式在许多框架中被大量使用。
//假设我们在创建MyData对象的时候,需要用按照d1,d2,d3的顺序对它进行初始化
public class MyData {
private int d1;
private int d2;
private int d3;
public MyData seFirstValue(int v1){
this.d1 = v1;
return this;
}
public MyData setSecondValue(int v2){
this.d2 = v2;
return this;
}
public MyData seThirdValue(int v3){
this.d3 = v3;
return this;
}
}
// used in a scenario where an object must be initialized in an certain order
public class MyBuilder {
public MyData create(int val1, int val2, int val3){
MyData data = new MyData();
data.seFirstValue(val1).setSecondValue(val2).seThirdValue(val3);
return data;
}
}
我们在创建的时候只暴露给用户这个create方法,用户传入的参数可以使无序的,但是我们必须按一定的方式进行初始化。