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

jjo님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

주문과 할인 도메인 개발

Oder 클래스 질문입니다.

작성

·

303

3

Order를 생성할 때, Order 클래스의 생성자를 이용하는 것이 아니라, OrderService의 createOrder로 생성하는 이유는 무엇인가요?

Member 인스턴스의 경우는 Member클래스의 생성자를 이용해서 생성하는데, Order 클래스의 경우는 바로 Order클래스의 생성자를 이용하지 않는 이유가 궁금합니다.

감사합니다.

답변 2

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 118jjh님 좋은 질문입니다.

이것을 static factory 패턴이라고 하는데요. 일반적으로 많이 사용하는 패턴 입니다. 다음 링크에 잘 정리되어 있습니다.

https://johngrib.github.io/wiki/static-factory-method-pattern/

추가로 Member 처럼 매우 생성이 단순한 경우에는 생성자를 그냥 사용하는게 더 좋습니다^^(간단한 곳에는 간단한 무기로!)

감사합니다.

0

안녕하세요. 영한님

답변 내용에서 의아한 부분이 생겨서 질문드립니다.

`Service`에서 `createOrder`를 사용하는 것도 `static factory method` 패턴이라고 볼 수 있는 것인가요?

`Order` 클래스를 직접 생성하지 않는 이유는 `createOrder`에 비즈니스 로직이 포함되기 때문이라고 생각했는데 답변을 보니 그렇지 않아보여서요!

답변 미리 감사드립니다!

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 선동님

Order.createOrder() 부분이 static factory method 패턴입니다.

여기서 서비스는 static factory method를 호출하는 것으로 이해하시면 됩니다.

감사합니다.

음 코드에서 `OrderService.createOrder(...)` 를 호출하는데요.

이 메서드는 `static` 하지 않은데 `static factory method`가 될 수 있는건가용?

서비스에서는 

이런식으로 코드가 구현되어 있었습니다!

김영한님의 프로필 이미지
김영한
지식공유자

네 해당 코드는 그냥 비즈니스 로직으로 이해하시면 됩니다.

감사합니다.

답변 감사합니다~ 😊

jjo님의 프로필 이미지

작성한 질문수

질문하기