본문 바로가기
Programming

[Java] 빌더 패턴(Builder Pattern)의 이해와 활용

by BTC_젤리요정 2023. 9. 15.

안녕하세요, BTC 블랙아웃입니다!

오늘은 디자인 패턴 중에서 객체의 생성 패턴에 속하는 빌더 패턴(Builder Pattern)에 대해 알아보겠습니다.

빌더 패턴은 복잡한 객체의 생성을 간결하고 명확하게 할 수 있도록 도와줍니다.

 

1. 빌더 패턴이란?

빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 분리하여, 동일한 생성 절차에서 다른 표현 결과를 만들 수 있게 하는 디자인 패턴입니다.

 

2. 왜 빌더 패턴을 사용하나요?

문제 상황

생성자에 많은 인자가 있을 때, 인자의 순서를 혼동하기 쉽습니다. 또한, 시간이 지나면서 객체의 생성 방식이 변할 경우 생성자의 인자가 늘어나거나 줄어들 수 있어 유지 보수가 어렵습니다.

해결 방안

빌더 패턴은 객체 생성의 복잡성을 해결하고, 명확하게 객체를 생성할 수 있도록 도와줍니다. Fluent API 형태로 제공되어, 읽기 쉽고 사용하기 편리합니다.

 

3. 빌더 패턴의 구현

예제: User 클래스

public class User {
    private final String firstName;
    private final String lastName;
    private int age;
    private String phone;
    private String address;

    private User(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.phone = builder.phone;
        this.address = builder.address;
    }

    // getters ...

    public static class UserBuilder {
        private final String firstName;
        private final String lastName;
        private int age;
        private String phone;
        private String address;

        public UserBuilder(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

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

        public UserBuilder phone(String phone) {
            this.phone = phone;
            return this;
        }

        public UserBuilder address(String address) {
            this.address = address;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

객체 생성 예제:

User user = new User.UserBuilder("BTC", "Blackout")
                    .age(25)
                    .phone("010-1234-5678")
                    .address("Seoul, Korea")
                    .build();

4. 장점과 단점

장점:

  • 객체의 생성과 표현 방식을 분리하여 코드의 유연성과 가독성을 향상시킵니다.
  • 불변성(Immutable) 객체를 생성하는 데 도움을 줍니다.

단점:

  • Builder 클래스가 추가되므로 코드가 길어질 수 있습니다.

5. 결론

빌더 패턴은 복잡한 객체의 생성을 캡슐화하여 명확하고 유연하게 객체를 생성하는 데 도움을 줍니다. 복잡한 생성자 인자나 변경 가능성이 있는 객체 생성 시에 활용해보시길 바랍니다.

 

이상으로 빌더 패턴에 대한 포스팅을 마치겠습니다.

감사합니다!

 

'Programming' 카테고리의 다른 글

[Java] 상태 패턴(State Pattern)이란?  (0) 2023.09.27
[Mybatis] resultMap과 resultType  (0) 2023.09.27
정규표현식  (0) 2023.09.15
Go 언어 기초 문법 이해하기  (0) 2023.09.15
[Java] 싱글톤 패턴의 활용과 한계  (0) 2023.09.01

댓글