회원
주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액을 적용해달라(나중에 변경될 수 있음)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 정책을 못정했고 나중에 얼마든지 바뀔 수있다.(미확정임)
어떤 기능의 요구사항이 요구하는 도메인을 설계한다.
위의 그림에서는 회원서비스 기능이다.
회원 서비스
1. 회원 가입
2. 회원 조회
두 가지의 기능이 들어가야한다고 하자.
그렇다면 MemberService는 2가지 기능을 수행한다. 회원 가입과 회원 조회이다.
그리고 해당 데이터를 저장할 저장소를 선택한다. 이때 저장소는 DB일수도 메모리일수도, 혹은 외부시스템일 수도 있다. 이는 결정되지 않았다고 가정한다.
위의 그림에서는 회원 역할을 하는 클래스의 다이어그램을 그린 것이다.
MemberService라는 역할을 상속받아 구현하고 구현체는 DB와 통신하기 위한 MemberRepository에 의존한다. 이때 MemberRepository의 구현체는 설계상 두 가지가 될 수 있다.
각각의 역할들이 어떤 객체를 구현했고, 그에 따른 연결관계를 그린 것이다.
위의 그림에서 MemberRepository라고 그렸지만 해당 그림에서는 메모리회원저장소
를 구현체로 선택한 것이다.
역할이 어떤 기능을 가지는지 정의하고 그에 따라 필요한 의존성이 어떤 것이 있는지 설계해보자
에를 들면 주문 역할은 주문 DB, 주문 정책에 의존적이다.
회원은 회원 DB에 의존적이다.
해당 역할의 도메인을 설계했다면 실제 구현체로 어떤게 들어갈건지 설게해본다.
이때 사용하는건 실제 Class의 이름을 사용하는 것이다.
각각의 역할들이 실제 어떤 객체로 구현되어 있는지 그려보는 시간
이는 실제 기능을 담당하게 될 객체들을 그려넣는다.