[Java] 디자인 패턴 : 빌더 (Builder) 패턴

빌더 패턴은 객체 생성 시 생성자의 파라미터가 많을 때 유용한 디자인 패턴이다. 객체를 단계적으로 생성하며, 각 필드를 명확하게 설정할 수 있어 가독성과 유지보수성을 높여준다.
HootJem's avatar
Aug 14, 2024
[Java] 디자인 패턴 : 빌더 (Builder) 패턴

1. 빌더패턴이란?

💡
빌더 패턴은 객체 생성 시 생성자의 파라미터가 많을 때 유용한 디자인 패턴이다.
객체를 단계적으로 생성하며, 각 필드를 명확하게 설정할 수 있어 가독성과 유지보수성을 높여준다.
public static void main(String[] args) { Person p1 = new Person( 1, "홍길동", 20, "ssg@naver.com" ); }
생성자의 어떤 항목이 무엇을 의미하는지 알 수 없으며, 컬럼이 늘어날 수록 오류 가능성이 늘어난다.
이때 빌더패턴을 사용한다.
 

1.1 빌더 패턴 예제

notion image
notion image
이렇게 하면 직관적으로 자료 입력이 가능하다.
생성자 대신 빌더 패턴을 사용함으로써, 필드의 순서를 헷갈리지 않고 필요한 필드만 선택적으로 설정할 수 있다.
 
✔필드를 초기화 할때 알아볼 점
int 형은 자료 입력이 안되었을때 0 으로 초기화가 된다.
이때 0 을 입력한 것인지 초기화 된건지 알 수 없어짐. 0 이 아니라 null 로 초기화 되는게 옳다.
따라서 int → Integer 로 자료형을 바꿔주면 좋다.
notion image
notion image
int 일때 실행결과 → 0
Integer 일때 실행결과 → null
 

1.2 빌더 패턴의 장점

  • 가독성: 객체의 필드를 설정하는 방법이 명확하며, 파라미터의 순서를 기억할 필요가 없다.
  • 유연성: 모든 필드를 설정할 필요가 없고, 필요한 것만 설정할 수 있다.
  • 불변성: 빌더 패턴을 사용하면 생성된 객체를 불변 객체로 만들 수 있다. 모든 필드가 final로 선언되고, 생성 시에만 설정되기 때문에 이후에 수정할 수 없다.
 

1.3 빌더 패턴의 단점

  • 코드의 복잡성 증가: 빌더 클래스를 추가로 작성해야 하므로 코드의 양이 증가할 수 있다.
  • 성능 오버헤드: 객체 생성 시 빌더를 거쳐야 하므로, 성능에 민감한 상황에서는 오버헤드가 발생할 수 있다.
 
따라서 변수의 개수와 변경 가능성 등을 중점적으로 보고, 빌더 패턴을 적용할 지 판단 해야하며,
객체의 생성을 위해 생성자나 setter 를 사용하고 있다면 빌더 패턴을 사용해 보자.
Share article

[HootJem] 개발 기록 블로그