인프런 커뮤니티 질문&답변

wxogud3377님의 프로필 이미지
wxogud3377

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문, 주문상품 엔티티 개발

생성메소드

작성

·

832

2

생성메소드에 대해 잘 이해가 안가네요

어떨때 사용하게 되는건가요?

답변 1

4

안녕하세요, wxogud3377 님. 공식 서포터즈 y2gcoder 입니다.

생성 메서드를 사용하는 이유 혹은 사용처에 대해서 질문주신 것이라 생각합니다.

생성자와 달리 생성 메서드의 장점은 의도를 더 잘 드러낼 수 있는 이름을 사용할 수 있다는 것입니다. 현재 createOrder() 메서드를 통해 단순히 생성자를 사용하는 것보다 명시적으로 Order 객체를 만드는 메서드임을 더 잘 드러내주는 게 생성메서드의 장점이라고 생각합니다.

또한 예제에서는 생성 메서드가 createOrder() 하나 뿐이어서 더 와닿지 않으실 수 있지만, 실무에서는 매개변수를 달리해서 객체를 생성해야할 경우도 생깁니다. 예를 들어 (좀 억지스러운 가정일 수 있으나) 현재는 주문시에 배달주소를 필수적으로 입력해야 하지만, 요구사항이 바뀌어 주문 시에 배달 주소를 선택적으로 입력할 수 있게 되었다고 가정하겠습니다. 그렇게 된다면 생성자를 통한 생성방식에서는 delivery에 해당하는 매개변수에 null을 주거나, 아니면 생성자 오버로딩을 통해 아예 delivery가 없는 생성자를 만들게 됩니다. 생성 메서드 방식에서는 기존에 있던 createOrder() 메서드에 더해 createOrderWithoutDelivery() 메서드를 만들게 됩니다. 두 가지 코드를 봤을 때 저는 후자가 더 명확하다고 생각합니다.

이밖에도 강의에서 나온 생성 메서드는 정적 팩토리 메서드라고 하여 더 많은 장점이 있습니다.

이에 대해서는 다음 링크를 참고해주시면 감사하겠습니다!

감사합니다.

wxogud3377님의 프로필 이미지
wxogud3377

작성한 질문수

질문하기