빌더 (빌더) 디자인 패턴 (라고 빌더 디자인 모드) :
클래스의 내부 데이터 (데이터 클래스, 같은 구성, VO, PO, 엔티티를 ... 유지를위한 일반적으로 책임) 너무 복잡해서 시간이되면, 당신은이 클래스의 내부 구조를 이해하기 위해 생성 될 필요가있다, 이러한 일이있다 조립 및 다른 조직 사물의 혼란의 큰 더미가,이 시간을 학습의 비용을 증가하고 매우 혼란을 얼마나입니다, 이번에는 원의 종류 아 만들 때 만드는 방법, 그것의이 클래스에 대한 데이터를 관리 할 수있는 다른 방법을 원하는 것을에 그것에 단계적으로, 그리고 내가 잘에서 설정도 원하는 것은,이 빌더, 빌더 모델을 구축 할 수 있습니다 응용 프로그램 시나리오 모드와 클래스, 아 말하고 나에게 코드의 좋은 가독성을하지 않습니다 분리를 나타냅니다.
예를 들어 봐 :
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);
}
}
}
직접 새로운 의견 학생, 생성자는 그것을 가능한 한 작게, 이는 그들의 Student.Builder 의해 구성되는 액세스 범위를 만들기 위해 처리 된하지 체인의 한 종류 Student.Builder의 클래스 세트의 메소드를 구비 방법은 값을 설정 한 다음 최종 빌드 () 메소드가 반환의 경우 학생 개체를 다음과 같이 지금 당신은, Student 객체를 만들려면 :
... 학생의 = 새 Student.Builder () 이름 ( "CC") 암호 ( "QWERTY") 섹스 ( "M") .address ( "은하 초 회전 팔") .build ();
당신이 생성자 모드를 사용하지 않는 경우 (정상 사용 조건에서) 비교 :
/**
* 学生实体
*/
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=new Student("佟丽娅","qwerty","女","银河系第一");
행동 분석의 장단점을 비교 :
모드 빌더 : 장점의 setter 메소드 생성자 우리는 명확하게 바로 바로 설정 높은 가독성을 알 수있는 가치를 무엇을 비슷한 방법으로 코멘트를 취할 수 있으며, 단점은 상대적으로 긴하다.
일반 루틴 : 비교적 간단한의 장점은 높은 효율의 개발은 단점은 인수가 많은 정말 있다면, 악마는 각 아 상응하는 무엇을 의미하는지 알고있다. (한 줄에 옵션 모두와 함께, 참여 생성자 내부에 전달 된 것이다);