您的位置:首页 > 产品设计 > UI/UE

构造者(Builder)模式

2017-09-03 23:03 267 查看

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[/b].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();
}


这样我们在创建这个类的时候,就可以清晰的看到我们具体传的是哪一些参数,但是缺点也很明显,比较的冗长
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: