23가지 디자인 모드 - 빌더 모드(Builder)
역할: 복잡한 대상을 구축하는 데 도움을 준다.(예: 사용자 정의view)
Builder 모드라고도 하는데 안 썼을 수도 있지만 다 봤을 거예요.우선 매우 복잡한 대상이다. 비록 구조 방법은 간단하지만 그것의 사용은 매우 유연하고 많은 설정 가능한 항목이 있다.이럴 때 우리는 new를 하나 보고 원본 하나를 보고 설정하는 데 분명히 많은 시간이 필요하다.우리가 설정할 수 있는 항목만 주목할 수 있는 방법이 없을까요?네, 구축자.우리가 복잡한 대상을 만드는 것을 돕다.
세 가지 방법으로 구축:
Product 클래스에 대한 구성
public class Product {
private int id;
private String name;
private int type;
private float price;
}
public class Product {
private int id;
private String name;
private int type;
private float price;
public Product(int id) {
this.id = id;
}
。。。
public Product(int id, String name) {
this.id = id;
this.name = name;
}
。。。
public Product(int id, String name, int type) {
this.id = id;
this.name = name;
this.type = type;
}
。。。
public Product(int id, String name, int type, float price) {
this.id = id;
this.name = name;
this.type = type;
this.price = price;
}
}
이론적으로 이런 구축 방식은 xxx의 매우 많은 구조 방법을 생성해야 한다
public class Product {
private int id;
private String name;
private int type;
private float price;
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setType(int type) {
this.type = type;
}
public void setPrice(float price) {
this.price = price;
}
}
비교적 간단하지만 구조 과정이 몇 개의 호출로 나뉘었기 때문에 구조 과정에서 자바빈스는 일치하지 않는 상태에 있을 수 있고 클래스는 구조기 파라미터의 유효성을 검사함으로써 일치성을 확보할 수 없다.
public class Product {
private int id;
private String name;
private int type;
private float price;
public Product(Builder builder) {
this.id = builder.id;
this.name = builder.name;
this.type = builder.type;
this.price = builder.price;
}
public static class Builder {
private int id;
private String name;
private int type;
private float price;
public Builder id(int id) {
this.id = id;
return this;
}
public Builder name(String name) {
this.name = name;
return this;
}
public Builder type(int type) {
this.type = type;
return this;
}
public Builder price(float price) {
this.price = price;
return this;
}
public Product build() {
return new Product(this);
}
}
}
Product p = new Product.Builder()
.id(10)
.name("phone")
.price(100)
.type(1)
.build();
먼저 어떤 방식을 통해 구조 대상에 필요한 모든 매개 변수를 얻어낸 다음에 이 매개 변수를 통해 이 대상을 한꺼번에 구성한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.