ParansaikStudy / LDK-SpringBase

스프링 부트 기초 실습소
0 stars 0 forks source link

[4주차] Builder pattern #23

Closed Paransaik closed 11 months ago

Paransaik commented 11 months ago

개요

  1. Builder 개념 정리
  2. Lombok builder pattern 정리
  3. 그 외에 Builder pattern 찾아보기
dbzoseh2rl commented 11 months ago

<1. Builder 개념 정리>

public class TestMain{ @Test void test1(){ Test test = Test.builder() .number(1) .str("test") .build(); System.out.println("output : " + test.getNumber() + " " + test.getStr());

   Test test2 = Test.builder()
                   .str("test2")
                   .number(2)
                   .build();
   System.out.println("output : " + test2.getNumber() + " " + test2.getStr());

} }

위의 코드에서 생기는 문제는 매 객체마다 builder를 만드는 것은 꽤나 수고롭고 반복적인 작업이라는 것이다.
이것을 해결할 수 있는 방법 중 하나가 Lombok의 Builder Annotation이다.
- `@Builder Annotation` 을 사용한 코드 

@Builder @Getter public class Test{ private Integer number; private String str; }

public class TestMain{ @Test void test1(){ Test test = Test.builder() .number(1) .str("test") .build(); System.out.println("output : " + test.getNumber() + " " + test.getStr()); } }


## <3. 그 외에 Builder pattern 찾아보기>
1. 심플 빌더 패턴 (Effective Java)
보통 개발자들이 빌더 패턴을 말할 때 정의되는 것이 이펙티브 자바에서 소개한 빌더 패턴이다. GOF 빌더 패턴과 구분하기 위해 심플 빌더 패턴(Simple Builder Pattern) 이라고도 불린다.

2. 디렉터 빌더 패턴 (GOF)
GOF에서 정의하고 있는 디자인 패턴은 복잡한 객체의 생성 알고리즘과 조립 방법을 분리하여 빌드 공정을 구축하는것이 목적이다. 빌더를 받아 조립 방법을 정의한 클래스를 Director라고 부른다.

※ 참고자료: https://velog.io/@gourd_erased/Lombok-ArgsConstructor%EB%93%A4
Paransaik commented 11 months ago

잘 조사하였습니다. 아래 확인 후 Close 해주세요.

  1. 이펙티브 자바는 자바의 정석이라 불릴 정도로 유명한 책입니다. 자바에 관심 있으시다면 정독 추천드립니다.
  2. Lombok에서 어떤 어노테이션을 사용 시 발생할 수 있는 문제 때문에 Bulider pattern을 사용합니다. 어떤 어노테이션인지 찾아보시는 게 좋을 거 같습니다.
dbzoseh2rl commented 11 months ago
  1. 확인했습니다!
  2. @Builder에서 @NoArgsConstructor만 사용하면 멤버변수를 받는 생성자가 없기 오류가 발생할 수 있는점 리서치후에 인지하였습니다.