빌더 패턴 (Builder Pattern) 이란?

2024. 11. 13. 08:56·BackEnd/Spring

 

빌더 패턴(Builder Pattern) 이란?

 
빌더 패턴은 객체 생성 패턴 중 하나로, 복잡한 객체를 단계별로 생성할 수 있게 해준다. 이 패턴은 특히 많은 매개 변수를 가진 생성자나 객체 생성 시 다양한 옵션을 제공해야하는 경우에 유용하다. 빌더 패턴을 사용하면 객체 생성의 유연성을 높이고 , 가독성과 유지 보수성을 향상시킬 수 있다.
 
 

빌더 패턴의 구성 요소

 

  • Builder 클래스 : 객체 생성을 담당하는 내부 클래스 이다. 이 클래스는 객체의 각 필드를 설정할 수 있는 메서드들을 제공하며, 최종적으로 객체를 생성하는 build( ) 메서드를 가진다.
  • Director 클래스 (선택적) : 객체 생성 절차를 정의하는 클래스이다. 빌더 패턴의 구현 시 반드시 필요한 것은 아니며, 주로 복잡한 객체 생성 절차를 캡슐화 할 때 사용된다.

 

@Builder

 
Lombok의 @Builder는 빌더 패턴을 간편하게 구현할 수 있도록 도와주는 어노테이션이다. 빌더 패턴은 객체 생성 시 여러 매개변수를 사용할 때 유용하게 사용할 수 있는 디자인 패턴이다. Lombok의 @Builder는 복잡한 객체 생성 과정을 단순화하고, 가독성을 높이며, 불변 객체를 쉽게 만들 수 있게 한다.
 

사용 예시1

 

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BuserBean { //FormBean
	private int buserno;
	private String busername;
	private String buserloc;
	private String busertel;
	
	//폼빈을 Entity로 변환하는 메소드
	//lombok의 @Builder를 이용하면 쉽게 빌더 패턴을 운영 가능
	//단계별로 Buser 객체의 각 필드를 선택적으로 설정할 수 있다.
	public Buser toEntity() {
		return Buser.builder()
				.buserno(this.buserno)
				.busername(this.busername)
				.buserloc(this.buserloc)
				.busertel(this.busertel)
				.build();
	}
}

 
 

사용 예시2 (빌더 패턴을 사용하지않은 경우와 사용한 경우를 비교해 볼 수 있다.)

 

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BuserDto { //데이터 전달용
	//DTO는 엔티티에서 필요한 데이터만 추출하거나, 전체 데이터를 읽어 또 다른 클래스, 클라이언트에 전달
	private int buserno;
	private String busername;
	private String buserloc;
	private String busertel;
	
	//Buser(Entity)를 BuserDto로 변환 
	/* 빌더 패턴 안씀
	public static BuserDto fromEntity(Buser entity) {
		BuserDto dto = new BuserDto();
		dto.setBuserno(entity.getBuserno());
		dto.setBusername(entity.getBusername());
		dto.setBuserloc(entity.getBuserloc());
		dto.setBusertel(entity.getBusertel());
		return dto;
	}
	*/
	
	//빌더 패턴 쓴 ver
	public static BuserDto fromEntity(Buser entity) {
		return BuserDto.builder()
				.buserno(entity.getBuserno())
				.busername(entity.getBusername())
				.buserloc(entity.getBuserloc())
				.busertel(entity.getBusertel())
				.build();
	}
}

 
 
 

주의할 점!

 
@Builder 어노테이션을 사용할때에는 @NoArgsConstructor 와 @AllArgsConstructor 어노테이션을 함께 작성해줘야한다!!
 

@Builder
@NoArgsConstructor
@AllArgsConstructor

 

'BackEnd > Spring' 카테고리의 다른 글

Entity 와 DTO의 개념과 차이점  (9) 2024.11.03
[Thymeleaf] 3. 사용 예시 (기본, 레이아웃)  (7) 2024.11.01
[Thymeleaf] 2. Thymeleaf 문법  (4) 2024.10.30
[Thymeleaf] 1. Thymeleaf 의 특징과 설정 방법  (5) 2024.10.29
Spring Annotaion 알아보기  (6) 2024.10.23
'BackEnd/Spring' 카테고리의 다른 글
  • Entity 와 DTO의 개념과 차이점
  • [Thymeleaf] 3. 사용 예시 (기본, 레이아웃)
  • [Thymeleaf] 2. Thymeleaf 문법
  • [Thymeleaf] 1. Thymeleaf 의 특징과 설정 방법
hee-coding
hee-coding
  • hee-coding
    J의 코딩 일기
    hee-coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • FrontEnd (3)
        • HTML,CSS,Java Script (0)
        • React (3)
      • BackEnd (11)
        • DataBase (0)
        • JAVA (4)
        • Servlet & JSP (0)
        • Spring (7)
      • Project (1)
      • Error (1)
      • Git (0)
      • Coding Test Practice (4)
      • 일상~ (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    frontend
    it
    오블완
    Coding
    티스토리챌린지
    react
    코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
hee-coding
빌더 패턴 (Builder Pattern) 이란?
상단으로

티스토리툴바