비즈니스 요구사항과 설계
-
회원
- 회원 가입과 회원 조회를 할 수 있다
- 회원 등급은 일반과 VIP가 있다
- 회원 데이터는 자체 DB와 외부 시스템 연결 중 미확정이다
-
주문과 할인
- 회원 등급에 따라 할인 정책을 적용한다
- VIP는 1000원을 할인해주는 고정 할인을 적용한다
- 단, 위 할인 정책은 변경 가능성이 높고 아예 적용하지 않을 수도 있다(미확정)
회원 도메인
- 회원 도메인 설계
- Grade(Basic, VIP), Member(id, name, grade)
- MemberService(join, findMember)
- MemberRepository(save, findById)
주문과 할인 도메인
- 주문과 할인 도메인 설계
- Order(memberId, itemName, itemPrice, discountPrice) : 회원아이디, 주문아이템, 할인된 가격
- DiscountPolicy.discount(member, price)
- FixDiscountPolicy: VIP등급인 경우, price에서 -1000원 계산
- OrderService.createOrder(memberId, itemName, itemPrice)
- OrderServiceImpl
회원조회(MemberServiceImpl.findById)
할인적용(FixDiscountPolicy.createOrder)
주문결과 반환(return new Order)
[출처] 스프링 핵심 원리 - 기본편, 김영한