-
Builder 패턴 활용기개발/java 2021. 12. 25. 16:37
엔티티를 통해 Request 객체를 상속받는다고 가정을 하겠습니다.
그리고 Request 객체는 엔티티 이외의 요소가 필요하다고 가정을 하겠습니다.
이 경우 Request 객체는 부모인 엔티티 객체에 대한 정보가 필요합니다.
Request를 사용할 때 단순 부모 클래스에 setter getter를 두어 변수로 받아 올 수 있지만 이는 불변 객체를 위반합니다.
그러므로 Builder 패턴으로 작성을 하는게 일반적으로 맞다고 생각합니다.
그러나 Builder패턴을 사용할 경우 클래스 상단에 Builder 애노테이션을 넣는다고 해서 부모 클래스를 받아올 수 있는 것이 아닙니다.
방법은
1.부모 클래스에 @AllArgsConstructor 애노테이션을 추가하여 모든 변수를 가진 생성자를 추가 합니다.
2.자식 클래스에 생성자를 추가하고 생성자의 파라미터에 부모 클래스의 파라미터에 관한 정보를 넣습니다.
3.super 메서드를 통해 부모의 생성자를 호출 합니다.
4.자식 클래스 내에 있는 변수를 대입 받습니다.
예제를 한번 보겠습니다.
1.부모 클래스
@AllArgsConstructor public class Cafe { private String menu; }
2.자식클래스
public class CafeReq extends Cafe{ private Integer employeeDiscount; @Builder public CafeReq(String menu, Integer employeeDiscount) { super(menu); this.employeeDiscount = employeeDiscount; } }
3.사용 메서드
public static void cafeBuilder() { CafeReq cafeReq = CafeReq.builder().employeeDiscount(0).menu("아메리카노").build(); }
'개발 > java' 카테고리의 다른 글
stream vs parallelStream (0) 2021.12.30 초기화블록 (0) 2021.12.25 Stream.of vs Arrays.stream (0) 2021.12.23 제네릭이 멀까 (0) 2021.12.22 Iterate는 멀까 (0) 2021.12.18