[Java] 빌더패턴

Hyo Kyun Lee·2025년 1월 21일
0

Java

목록 보기
82/87

1. 개요

함수형 프로그래밍과 유사하게 단일객체가 아닌 순환객체, 연산자의 의미를 담아 객체를 생성할 수 있는 방법이 있다는 것을 알게되었다.

빌더패턴에 대해 몇번 들어보긴 하였지만 이번에 알아본 계기로 확실하게 의미를 파악하여 추후 적용할 수 있도록 공부한 기록을 남긴다.

2. 빌더패턴

빌더패턴은 필드변수에 따라 부분적으로 생성자를 만들어 생성자를 반환해주는 패턴으로, 순환객체로 활용할 수 있어 함수형프로그래밍과 끊임없이 재활용할 수 있는 객체지향성의 의미가 잘 담겨진 패턴이라 볼 수 있겠다.

나아가 이론적으로 일급객체까지는 아닐 수 있으나, 연산에 적용할 수 있다는 생각이 들었기에 실질적으로 일급객체의 의미도 담겨져 있는 패턴이라 생각하였다.

빌더패턴을 통해 생성자를 만드는 방법을 살펴보면 이해를 바로 할 수 있다.

class StudentBuilder {
    private int id;
    private String name;
    private String grade;
    private String phoneNumber;

    public StudentBuilder id(int id) {
        this.id = id;
        return this;
    }

    public StudentBuilder name(String name) {
        this.name = name;
        return this;
    }

    public StudentBuilder grade(String grade) {
        this.grade = grade;
        return this;
    }

    public Student phoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
        return this;
    }
    
    public Student build() {
        return new Student(id, name, grade, phoneNumber); // Student 생성자 호출
    }

이처럼 각 필드변수에 대한 명시생성자를 부분적으로 선언하였고, 특히 반환형태를 해당 생성객체를 주었다는 점을 유념하도록 한다.

빌더패턴은 위와 같이 객체생성자를 만들고, 최종적으로 build메소드를 통해 특정 필드변수를 기반한 객체를 반환하도록 설정할 수 있다.

3. 특징

  • 생성자를 만든 상태에서 해당 생성자 정보를 기반으로 빌드를 할 수 있기에 필수 멤버변수와 일반 멤버변수를 분리할 수 있다.
  • 가독성이 좋고 생성자 생성 프로세스를 한눈에 파악하여 의미적으로 전달성이 명확해진다.
  • 생성자 생성 후 필드변수들에 대해 불변성을 제공하여, 멤버변수의 수정을 차단한다. 말그대로 생성자를 빌드한다는 목적으로 고안된 패턴이기에 일관된 객체정보와 thread safe한 정보를 제공할 수 있다.

4. 참고자료

빌더패턴(이해가 가장 잘되었던 글이었다) - https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EB%B9%8C%EB%8D%94Builder-%ED%8C%A8%ED%84%B4-%EB%81%9D%ED%8C%90%EC%99%95-%EC%A0%95%EB%A6%AC

0개의 댓글

관련 채용 정보