빌더패턴은 무엇인가? @Builder

배지원·2022년 11월 17일
0

SpringBoot

목록 보기
9/11
post-custom-banner

일반적인 객체 생성은 객체를 정의하고 객체를 생성할 때 생성자를 통해 값을 입력받아 생성한다.

Name name = new Name("홍길동",12,"남자");

하지만 생성자만을 통해 객체를 생성하면 몇가지 단점들이 있어 이를 보완하고자 생긴 것이 Builder를 통해 입력 받는 방법이다.

Name name = Name.builder()
				.name("홍길동")
                .age(12)
                .gender("남자")
                .build();

1. Builder의 사용 이유

(1). 생성자 파라미터의 가독성이 좋지 않음

Name name = new Name("홍길동",12,"남자","회사원",180,70);
  • 위처럼 생성자가 입력받는 파라미터가 여러개일 경우 각 파라미터가 어떤 값을 의미하는지 알기가 힘들다.

따라서 Builder를 통해 각각 파라미터가 의미하는 값이 무엇인지 알기 쉽다.

Name name = Name.builder()
				.name("홍길동")
                .age(12)
                .gender("남자")
                .job("회사원")
                .height(180)
                .weight(70)
                .build();

(2). 어떤 값을 먼저 설정하던 상관 없다

  • 생성자를 통해 값을 넣을때는 기존에 설정했던 생성자의 파라미터의 순서에 맞춰 파라미터를 넣어줘야만 오류가 발생하지 않았다. 하지만 그렇게 하게 되면 매번 기존에 생성했던 파라미터를 보고 맞춰줘야하는 어려움이 발생한다.

하지만 Builder를 사용하면 파라미터의 이름과 값을 매칭시켜서 저장하기 때문에 순서에 관여하지 않는다.

Name name = Name.builder()
				.name("홍길동")
                .gender("남자")
                .age(12)
                .weight(70)
                .job("회사원")
                .height(180)
                .build();

2. @Builder

  • 이처럼 유용한 Builder를 사용하기 위해서는 @Builder 어노테이션을 붙여 사용하면 된다.
@Builder
public class Person{
	private String name;
    private int age;
    private String gender;
    private String job("회사원")
    private int height(180)
    private int weight(70)
}

값을 저장하는 클래스(DTO)에 붙여주면 어디서든지 Builde를 통해 값을 위와 같이 넣을 수 있다.



※ 참고자료 : https://pamyferret.tistory.com/67

profile
Web Developer
post-custom-banner

0개의 댓글