티스토리 뷰

Builder Pattern 이란?

복잡한 단계를 거쳐야 생성되는 객체의 구현을
서브 클래스에게 넘겨주는 패턴

구현

public class Member {
    private String name;
    private String email;
    private String gender;
    private int age;

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }

    // Member의 서브 클래스 Builder
    public static class Builder {
        // 필수 인자
        private String name;
        private String email;

        // 선택 인자
        private String gender = null;
        private int age = 0;

        // 필수 인자들은 생성자에 추가한다.
        public Builder(String name, String email) {
            this.name = name;
            this.email = email;
        }

        // 여기서의 this는 Builder 인스턴스이다.
        // return this를 해줌으로써 pipeline으로 구현 가능하다.
        public Builder gender(String gender) {
            this.gender = gender;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        // 마지막으로 build()로 Member 생성자
        // 파라미터에 builder를 넘겨 Member를 생성한다.
        public Member build() {
            return new Member(this);
        }
    }

    // builder를 파라미터로 받는 private한 Member 생성자
    // private이기 때문에 외부에서 호출이 불가능 하다.
    private Member(Builder builder) {
        this.name = builder.name;
        this.email = builder.email;
        this.gender = builder.gender;
        this.age = builder.age;
    }
}

팁 Tip

위처럼 구현하지말고 👍Lombok의 @builder를 사용하자

'Computer Science > Design pattern' 카테고리의 다른 글

[Design Pattern] 템플릿 메서드 패턴  (0) 2021.08.24
[생성 패턴]: Singleton Pattern  (0) 2021.01.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함