学解《Effective java》之 构造器到构建器的跨越

自己理解不深不全,多多见谅


法则二 遇到多个构造器参数时考虑使用构建器(Builder)

    面临情况如下:

  一、重叠构造器(telescoping constructor):遇见多参的第一选择,如下:

   public class Test{

    private int mA;

private int mB;

public Test(){} //第一个构造器,无参

public Test(int A){……} //加一层

public Test(int A, int B){……} //再加一层

…… //加多层

}

在使用创建对象的时候,若是参数太多,易出错。


二、JavaBean模式

    先构造一个无参构造器,然后使用set()方法处理参数。

……

……

Test t = new Test();

t.setA(1);

t.setB(2);

……

……

易读,但也有缺点,不能保证线程状态一致


三、Builder模式

依据已有类,创建一个Builder对象,并将所需填充好之后,将对象返给构造器,如下所示:

public class Test{

    private int mA;

private int mB;


public static class Builder{

private int bA = 0;

private int bB = 0;

public Builder(){}

public Builder mA(int a){ this.bA = a; return this; } ///返回builder本身,则可以连续调用 Test.Builder.mA(1).mB(1);

public Builder mB(int b){ this.bB = b; return this; }

}

public Test(Builder builder){

this.mA = builder.bA;

this.mB = builder.bB;

}

}

一般构造器的可变参数是一个,利用builder构建器则可以有多个可变参数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百草疯茂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值