인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

taeu kim님의 프로필 이미지
taeu kim

작성한 질문수

스프링 핵심 원리 - 기본편

주문과 할인 도메인 실행과 테스트

Order 클래스의 calculatePrice() 가 있는 이유?

작성

·

261

2

비즈니스 로직은 보통 Service 구현체에 들어가는데 calculatePrice() 는 계산이라는 비즈니스 로직인 거같은데  itemModel 인 Order 클래스 에 넣으셨을까요?? 하나의 값이라는 점에서 그냥 안에 넣은것같기도한데

정확한 의도가 궁금합니다. 설계의 관점에서 고민하다보니 의문이 들어 질문합니다.

답변 1

6

안녕하세요, taeu kim님. 공식 서포터즈 codesweaver 입니다.
.
서비스에서 필요할때마다 아래처럼 calculatePrice를 구해서 처리할 수 있습니다.

int calculatePrice = getItemPrice() - getDiscountPrice();

.

이 때 calculatePrice 가 여러곳에서 사용된다면  그 메서드마다 calculatePrice를 구하는 코드를 작성해야 할텐데요, 이후에 calculatePrice를 구하는 공식이 바뀌거나 한다면 수정하기 번거롭겠지요.

.

Order가 calculatePrice를 알아서 처리해주면, 이후 공식이 바뀌어도 간편하게 모든곳에 적용할 수 있습니다 또 Order가 calculatePrice를 알고있는것은 자연스럽기도 합니다. Order를 사람으로 치환해서 생각하면, 주문담당자가, 상품의 원가와 할인가를 모두 알고 있는데,실구매가를 모른다면 이상하겠죠?


감사합니다.

taeu kim님의 프로필 이미지
taeu kim

작성한 질문수

질문하기