デザインモード構成者モード
3155 ワード
簡単に述べる
Buiderモードは、クラスの構築と表現を分離することができる。
例
http://www.cnblogs.com/cc11001100/p/5939220.htmlは、builderモード を使用しない。
では、対象を作成する際には、ブライダルモードを使用します。
Buiderモードは、クラスの構築と表現を分離することができる。
例
http://www.cnblogs.com/cc11001100/p/5939220.html
* builder
public class Student {
private int id;
private String name;
private String passwd;
private String sex;
private String address;
//
private Student() {
}
//
private Student(Student origin) {
//
this.id = origin.id;
this.name = origin.name;
this.passwd = origin.passwd;
this.sex = origin.sex;
this.address = origin.address;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPasswd() {
return passwd;
}
public String getSex() {
return sex;
}
public String getAddress() {
return address;
}
/**
* Student Student.Builder,
*
*/
public static class Builder {
private Student target;
public Builder() {
target = new Student();
}
public Builder address(int id) {
target.id = id;
return this;
}
public Builder name(String name) {
target.name = name;
return this;
}
public Builder password(String passwd) {
target.passwd = passwd;
return this;
}
public Builder sex(String sex) {
target.sex = sex;
return this;
}
public Builder address(String address) {
target.address = address;
return this;
}
public Student build() {
return new Student(target);
}
}
}
public class Student {
private int id;
private String name;
private String passwd;
private String sex;
private String address;
public Student() {
}
public Student(String name, String passwd, String sex, String address) {
super();
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 void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
では、対象を作成する際には、ブライダルモードを使用します。
Student s = newStudent.Builder().name("CC").password("qwerty").sex(" ").address("xxx").build();
というように、パラメータの値をbuilderという内部クラスの方法で規定し、最後にこのようなオブジェクトに戻ると、パラメータの内容がはっきりしているという利点があります。一般的にオブジェクトを作成する時には、甘えてsetメソッドでパラメータの意味は表現しにくいです。(後に複数の方法が挙げられる理由は、各方法が一つのbuilderオブジェクトを返したからです。)