SPRING 핵심 원리 [ 기본편 ]

[스프링 핵심 원리] 섹션 2.6 예제만들기 (주문과 할인 도메인 설계)

wlalsu_u 2023. 1. 24. 15:08

2.6.1  주문 / 할인 도메인 설계

 

 

 

앞선 섹션 2.2의 비즈니스 요구사항을 바탕으로 주문 / 할인 도메인을 설계해보자.

 

 

주문 / 할 도메인 요구사항은 다음과 같다,

 

 

 

 

 

주문 / 할인 도메인 정책

 

 

1) 회원은 상품을 주문할 수 있다.

 

2)  회원 등급에 따라 할인 정책이 다르게 적용된다.

 

3) 모든 VIP 는 1000원을 할인해주는 고정 금액 할인이 적용된다. (나중에 변경 가능)

 

4) 할인 정책은 변경 가능하다. 최악의 경우 할인을 적용하지 않을 수 있다. (미확정)

 

 

 

 

 

 

주문 / 할인 도메인 요구사항을 설계해보면 다음과 같다.

 

 

 

 

 

출처 : 김영한 - spring 핵심 원리 - 기본편

 

 

클라이언트

 

 

: 클라이언트는 주문을 생성할 수 있다.

 

(간단한 예제를 위해 상품 객체가 아닌 상품자체 데이터를 넘기도록 하였다.)

 

 

 

주문 서비스 역할

 

 

: 할인을 위해서는 회원 등급이 필요하므로, 회원 저장소에 회원 조회를 요청한다.

 

(주문 데이터를 생성하여 데이터베이스에 저장해야 하지만, 간단히 하기 위해 db에 저장하는 과정은 생략하였다.)

 

 

 

회원 저장소 역할

 

 

: 주문 서비스가 요청한 회원을 조회한다.

 

 

 

할인 정책 역할

 

: 회원 등급에 따른 할인 여부를 확인한다.

 

 

 

 

 

 

 

 

 

앞선 주문 도메인 협력 관계를 클래스 다이어그램으로 나타내면 다음과 같다.

 

 

 

 

 

출처 : 김영한 - spring 핵심 원리 - 기본편

 

 

 

 

인터페이스와 구현체를 이용하여 자유룝게 구현 객체를 조립할 수 있도록 하였다.

 

따라서, 회원 저장소와 할인 정책을 이후에도 유연하게 변경할 수 있다.

 

 

 

 

 

 

즉, 회원을 메모리에서 조회한 후, 정액 할인 정책을 지원하거나

 

회원을 DB 에서 조회하고, 정률 할인 정책을 지원하더라고

 

협력 관계를 그대로 재사용할 수 있는 것이다.

 

 

 

 

출처 : 김영한 - spring 핵심 원리 - 기본편

 

출처 : 김영한 - spring 핵심 원리 - 기본편

 

 

 

 

 

 

 

김영한 '스프링 핵심 원리 - 기본편' 강의를 기반으로 작성하였습니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8