순수 자바로 세팅
https://start.spring.io
회원 클래스 다이어그램
역할
save(Member) : Member 객체를 저장소에 저장
findById(MemberId) : Id에 맞는 Member 객체를 저장소에서 가져오는 기능
역할
join(Member) : Member 객체를 저장소에 저장
findMember(memberId) : Id에 맞는 Member 객체를 저장소에서 가져오는 기능
구현
store : HashMap<>()
save : store.put()
findById : store.get()
구현
Repository : MemoryMemberRepository()
join : MemoryMemberRepository.save()
findMember : MemoryMemberRepository.findById()
DiscountPolicy
역할
discount : member객체마다 알맞은 할인 금액을 선정한다.
OrderService
역할
createOrder : memberId, itemName, itemPrice를 입력받아 order 객체를 생성한다.
구현
discount : member의 grade가 VIP인 경우 discountFixAmount = 1000 의 고정된 할인 금액을 반환
구현
createOrder : MemberServiceImpl에서 memberId로 member의 grade를 가져오고FixDiscountPolicy에서 고정된 할인금액을 반환받아 최종 order 객체를 생성한다.
//given
Long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
//when
Order order = orderService.createOrder(memberId, "itemA", 10000);
//then
Assertions.assertThat(1000).isEqualTo(order.getDiscountPrice());