Closed Paransaik closed 11 months ago
코드예시
public class Test{
private Integer number;
private String str;
public static class Builder{
private Integer number;
private String str;
public Builder number(Integer number){
this.number = number;
return number;
}
public Builder str(String str){
this.str = str;
return this;
}
public Test build(){
return new Test(number, str);
}
}
}
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
잘 조사하였습니다. 아래 확인 후 Close 해주세요.
@Builder
에서 @NoArgsConstructor
만 사용하면 멤버변수를 받는 생성자가 없기 오류가 발생할 수 있는점 리서치후에
인지하였습니다.
개요