비지니스 요구사항과 설계
회원
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB가 있을 수도, 외부 시스템과 연동할 수도 있다.(미확정)
주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 vip는 1000원을 할인해주는 고정 할인인데, 나중에 변경될 수 있다.
- 할인 정책은 변경가능성이 높다. 오픈 직전까지 미루고 싶고, 심지어 할인을 적용하지 않을 수도 있다. ( 미확정이다. )
⇒ 미확정이 많으니 구현체를 언제든지 갈아끼울 수 있도록 설계하자.
회원 도메인 설계
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB가 있을 수도, 외부 시스템과 연동할 수도 있다.(미확정)
회원 도메인 협력관계
- 메모리 회원 저장소는 개발용으로만 사용한다. DB가 확정되거나 외부시스템이 확정되면 갈아끼울 것이다.
회원 클래스 다이어그램
- 외부 시스템 연동 회원 저장소는 편의상 생략되었다.
회원 객체 다이어그램
- 어느 class에 의존할 지 동적으로(메모리에 올라갈 때) 결정되기 때문에 회원 클래스 다이어그램 만으로는 정확한 의존관계를 정의하기 힘들다. 따라서 객체 다이어그램을 다로 그린다.
주문과 할인 도메인 설계
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 vip는 1000원을 할인해주는 고정 할인인데, 나중에 변경될 수 있다.
- 할인 정책은 변경가능성이 높다. 오픈 직전까지 미루고 싶고, 심지어 할인을 적용하지 않을 수도 있다. ( 미확정이다. )
주문 도메인 협력, 역할, 책임
- 주문 생성: 클라이언트는 주문서비스에 주문 생성을 요청한다.
- 회원 조회: 할인을 위해서 할인 등급이 필요하므로 회원을 조회한다.
- 할인 적용: 주문 서비스는 할인 여부를 할인 정책에 위임한다.
- 주문 결과 반환: 주문 서비스는 할인 결과를 포함한 주문 결과를 반환한다.
주문 도메인 전체
- 역할과 구현을 분리해서 자유롭게 객체를 조립할 수 있게 설계했다. 따라서, 모두 유연하게 변경할 수 있다.
주문 도메인 클래스 다이어그램
주문 도메인 객체 다이어그램1
- 회원을 메모리에서 조회하고, 정액 할인 정책을 지원해도, 주문 서비스는 변경되지 않는다.
주문 도메인 객체 다이어그램2
- 회원을 메모리가 아닌 실제 DB에서 조회하고, 정률 할인 정책을 지원해도 주문 서비스는 변경되지 않는다.
Uploaded by N2T
(23.05.31 22:29)에 작성된 글 입니다.