构造器参数有多个时要使用构建器builder
参数有多个,weight,height,log,nice多个参数,
其中weight和height参数是必须的,而log和nice参数是随机选择的,可以有其中一个,也可以两个都需要。
这是我们为了避免使用beans方法时由于线程不同步的因素,我们使用构建器。(builder)
在原来类的基础上创建内部类builder,builder中的属性和原来类Cat中的属性个数相同,然后:
1.把必须要的两个属性weight和height作为Builder的构造函数进行返回
2.其他的可以有的参数分别创建其构造的调用方法,
把这两种方式产生的属性都返回给Builder对象的属性
在创建一个Cat builder的方法,这个方法吧builder对象返回给new Cat(即使吧duilder对象的属性给了Cat对象)
这样就实现了对Cat类属性的随机选择添加(可以选择要添加的属性)
注意Cat对象 其在主方法中的调用方式
package builder;
public class Cat {
private final int height;
private final int weight;
private final int nice;
private final int log;
public static class Builder{
private int height;
private int weight;
private int nice = 0;
private int log = 0;
public Builder(int height,int weight)
{
this.height = height;
this.weight = weight;
}
public Builder nice(int nice)
{
this.nice = nice;
return this;
}
public Builder log(int log)
{
this.log = log;
return this;
}
public Cat builder()
{
return new Cat(this);
}
}
private Cat(Builder builder)
{
height = builder.height;
weight = builder.weight;
nice = builder.nice;
log = builder.log;
}
}
测试类
注意Cat对象 其在主方法中的调用方式
package builder;
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Cat cat1 = new Cat.Builder(1, 1).nice(5).log(4).builder();
System.out.println("使用了builder方法构造了猫的各项信息");
}
}