构造器builder

遇到多个构造器参数时考虑用构造器

  • 提到了流畅接口的问题
  • 使用Builder来解决问题
  • Effective java的内容
  • 当可变参数大于4个以上的时候用Builder,当然一开始就用是比较好的
public class Person {
    //这里可以直接使用final没有问题的!!!
    private final String firstName;//必填
    private final String lastName;//必填

    private String city;//下面3个是选填!
    private String adress;
    private boolean marry;

    //这里考虑了用内部的Builder!也可以在外面声明Builder类

    public static class Builder {//Builder是静态 类 !!
        private String firstName;//直接把里面的字段写下来
        private String lastName;//这里需要不需要直接先    = null??

        private String city;//
        private String adress;
        private boolean marry;

        public Builder (String firstName , String lastName){
            this.firstName = firstName;
            this.lastName = lastName;
        }
        public Builder setCity(String city){
            this.city = city;
            return this;
        }
        public Builder setAdress(String adress){
            this.adress = adress;
            return  this;
        }
        public Builder setMarry(boolean marry){
            this.marry = marry;
            return this;
        }

        public Person build(){
            return new Person(this);
        }
    }
    private Person(Builder builder){//构造方法私有化
        firstName = builder.firstName;
        lastName = builder.lastName;
        city = builder.city;
        adress = builder.adress;
        marry = builder.marry;
    }
}
  • 下面的如何调用
public class test {
    Person mPerson = new Person.Builder("xin","gao")
            .setCity("henan")
            .setMarry(false)
            .build();//不是必填的可以随意添加
}
  • 通过该Builder模式,以后如果在需要添加参数,直接在Builder中添加setXXX()就行了!!
  • 恩 现在就知道这么多…初次理解(刘欣课中的理解)//大家也关注下:微信号 码农翻身
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值