728x90
Bulider Pattern 이란?
복잡한 객체들을 단계별로 생성할 수 있도록 하는 디자인 패턴입니다.
Builder Pattern의 사용 목적
- 복잡한 객체의 생성 방법과 표현 방법을 분리하기 위해 사용합니다.
- 객체 생성에 필요한 파라미터가 많아 생성자 오버라이딩이 너무 많을 때 사용합니다.
Builder Pattern의 장점
- 가독성이 좋아지며 인자의 의미를 코드에서 명확히 알 수 있습니다.
- setter method가 없으므로 변경 불가능한 객체를 만들 수 있습니다.
- 한 번에 객체를 반환하므로 일관성이 깨지지 않습니다.
- 생성자로 객체를 생성할 때처럼 인자의 순서를 지키지 않고 객체를 생성할 수 있습니다.
Builder Pattern의 단점
- 인스턴스를 생성하기 전에 반드시 빌더를 생성해야 합니다.
- 관리해야 할 클래스가 많아지고 구조 및 구현이 복잡해지는 단점이 있습니다.
Builder Pattern 예제
package builder;
public class SimpleUser {
private long id;
private String name;
private int age;
private String address;
private String phoneNumber;
public SimpleUser(long id, String name, int age, String address, String phoneNumber) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
this.phoneNumber = phoneNumber;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getAddress() {
return address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public static SimpleUserBuilder builder() {
return new SimpleUserBuilder();
}
public static class SimpleUserBuilder {
private long id;
private String name;
private int age;
private String address;
private String phoneNumber;
public SimpleUserBuilder() {
}
public SimpleUserBuilder id(long id) {
this.id = id;
return this;
}
public SimpleUserBuilder name(String name) {
this.name = name;
return this;
}
public SimpleUserBuilder age(int age) {
this.age = age;
return this;
}
public SimpleUserBuilder address(String address) {
this.address = address;
return this;
}
public SimpleUserBuilder phoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public SimpleUser build() {
return new SimpleUser(id, name, age, address, phoneNumber);
}
}
}
728x90
'ComputerScience > Design Pattern' 카테고리의 다른 글
Adaptor Pattern (0) | 2023.03.06 |
---|---|
Facade Pattern (0) | 2023.02.26 |
Strategy Pattern (0) | 2023.02.20 |
디자인 패턴 - 디자인 원칙 (0) | 2023.02.14 |
Singleton Pattern (0) | 2023.01.30 |