빌더 패턴은 객체를 생성할 때 복잡한 초기화 과정을 단순화하고 가독성을 향상
객체의 생성과 객체의 구성을 분리하여 객체를 생성하는 과정을 보다 유연하게 만들어줌
객체에 많은 속성이 존재하고 이를 설정하는 것이 복잡한 경우에 사용
- 복잡한 객체의 생성을 단계적으로 진행
- 클라이언트 코드에서는 객체의 구성 단계를 명확하게 파악하고 원하는 속성만 설정
// Person 클래스
public class Person {
private String firstName;
private String lastName;
private int age;
private String address;
private Person() {} // 생성자는 private로 숨겨둠
public static class Builder {
private String firstName;
private String lastName;
private int age;
private String address;
public Builder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder address(String address) {
this.address = address;
return this;
}
public Person build() {
Person person = new Person();
person.firstName = this.firstName;
person.lastName = this.lastName;
person.age = this.age;
person.address = this.address;
return person;
}
}
}
// 클라이언트 코드에서 Person 객체 생성
public class Client {
public static void main(String[] args) {
Person person = new Person.Builder("John", "Doe")
.age(30)
.address("123 Main St")
.build();
System.out.println("First Name: " + person.getFirstName());
System.out.println("Last Name: " + person.getLastName());
System.out.println("Age: " + person.getAge());
System.out.println("Address: " + person.getAddress());
}
}
'learn > design pattern' 카테고리의 다른 글
팩토리 (Factory) (0) | 2023.09.22 |
---|---|
싱글톤 (Singleton) (0) | 2023.09.22 |