본문 바로가기
Java

[Java] Lombok의 Builder Design Pattern

by HoneyIT 2024. 7. 25.

1. Builder Design Pattern이란?

- 팩토리 패턴(Factory design pattern)과 추상 팩토리 패턴(Abstract Factory design pattern)에서 여러 속성 값들을 가질 때 발생하는 문제들을 해결하기위한 디자인 패턴

- 복잡한 객체 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴

  • 클라이언트에서 Factory 클래스로 너무 많은 인수들을 전달 받는 과정에서 동일한 인수가 많고 순서를 유지하기 어려워 오류가 발생할 수 있음
  • 넘길 필요가 없는 파라미터도 null값으로 명시가 필요
  • 객체가 무겁고 생성이 복잡한 경우 호출되는 Factory 클래스의 처리가 복잡해질 수 있음

2. Java의 Builder Design Pattern 구현

 

@Builder
@NoArgsConstructor 
@AllArgsConstructor
public class ProductImage {

    private String fileName;
    
}

- 위와 같이 Builder class를 생성

 

ProductImage productImage = ProductImage.builder()
        .fileName(fileName)
        .build();

 

- 위와 같이 체이닝(Chaining) 형식으로 구현할 수 있음

 

3. Builder Design Pattern의 장점과 단점

 

장점

- 인스턴스 생성을 보다 일관된 프로세스로 생성할 수 있음

- 체이닝 형태의 메서드를 호출하여 자연스럽게 인스턴스를 구성하고 객체 생성 유도

- 동일한 객체를 상속받더라도 서로 다른 빌더 구현체를 주입하여 서로 다른 객체를 생성할 수 있음

- 아래와 같이 필요하지 않은 필드에 대한 초기화를 하지 않아도 되어 간결한 표현이 가능함

 

@Builder
@NoArgsConstructor 
@AllArgsConstructor
public class ProductImage {

    private String fileName;
    private int fileSize;
    
    public static File(String fileName, int fileSize) {
    	this.fileName = fileName;
        this.fileSize = fileSize;
    }
}

 

ProductImage productImage = File.builder()
        .fileName(fileName)
        .build();

 

 

단점

- 인스턴스 생성 전에 빌더 생성이 반드시 필요하며 관리해야 할 클래스가 많아지고 구조가 복잡해질 수 있음

- 개발과정에서 필수로 들어가야 할 필드가 누락될 가능성이 있음

 


 

점층적 생성자, Java beans 등과 같은 대표적인 객체 생성 방법에 대해 구체적으로 파악하고 프로젝트 방향과 맞는 방식을 선택하여 개발을 진행하는 것이 중요할 것 같다.

 

 

 

 

 

 

 

 

 

참조 : https://www.digitalocean.com/community/tutorials/builder-design-pattern-in-java

'Java' 카테고리의 다른 글

[JAVA]Enum 열거 타입  (0) 2023.01.17
[Java] Java 공백 제거  (0) 2022.07.28
객체지향 프로그래밍이란 무엇일까  (0) 2021.03.01
DTO/DAO  (0) 2020.08.10
Ajax  (2) 2020.08.01