learn/design pattern

빌더 (Builder)

사겅이 2023. 9. 22. 00:44

출처 : https://refactoring.guru/design-patterns/builder

 

빌더 패턴은 객체를 생성할 때 복잡한 초기화 과정을 단순화하고 가독성을 향상
객체의 생성과 객체의 구성을 분리하여 객체를 생성하는 과정을 보다 유연하게 만들어줌
객체에 많은 속성이 존재하고 이를 설정하는 것이 복잡한 경우에 사용

 

  • 복잡한 객체의 생성을 단계적으로 진행
  • 클라이언트 코드에서는 객체의 구성 단계를 명확하게 파악하고 원하는 속성만 설정
// 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