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 |