构造者(Builder)模式

1:创建一个类

public class Student {
    private int id;
    private String name;
    private String passwd;
    private String sex;
    private String address;

    public Student(int id, String name, String passwd, String sex, String address) {
        this.id = id;
        this.name = name;
        this.passwd = passwd;
        this.sex = sex;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

}

这时我们需要去创建这个类时,就得
public static void main(String[] args) {
    Student student = new Student(1, "jacob", "123", "", "fj");
}
缺点:当我们的参数很多的时候,我们去创建这个类时,需要去传参,这时就很容易出现,不知道具体传哪个参数,这类问题

2:构造者模式

public class Student {
    public int id;
    public String name;
    public String passwd;
    public String sex;
    public String address;

    //私有化
    private Student(){}

    //私有化
    private Student(Student targer) {
        this.id = targer.id;
        this.name = targer.name;
        this.passwd = targer.passwd;
        this.sex = targer.sex;
        this.address = targer.address;
    }



    public static class Builder{

        private Student targer;

        public Builder() {
            targer = new Student();
        }

        public Builder setId(int id){
            targer.id = id;
            return this;
        }

        public Builder setName(String name){
            targer.name = name;
            return this;
        }

        public Builder setPasswd(String passwd){
            targer.passwd = passwd;
            return this;
        }

        public Builder setSex(String sex){
            targer.sex = sex;
            return this;
        }

        public Builder setAddress(String address){
            targer.address = address;
            return this;
        }

        public Student build(){
            return new Student(targer);
        }
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }



}
当我们去创建这个类时就变成:
public static void main(String[] args) {
    Student build = new Builder()
            .setId(1)
            .setName("jacob")
            .setPasswd("123")
            .setSex("")
            .setAddress("fj")
            .build();
}

这样我们在创建这个类的时候,就可以清晰的看到我们具体传的是哪一些参数,但是缺点也很明显,比较的 冗长

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值