티스토리 뷰

다음과 같은 요구 사항이 있다.

 

- 회원 관련

1. 회원 가입 / 조회 가능

2. 회원은 BASIC회원과 VIP 회원이 있다.

3. 회원 데이터는 자체 DB또는 외부 시스템과 연동 (미확정)

 

- 주문 관련

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

2. 회원 등급에 따라 할인 정책 적용 가능

3. VIP 회원에게는 할인 정책에는 두 가지가 있다. (고정 할인 정책 : 1000원 DC, 비율 할인 정책 : 10%) - 고정 할인 정책을 적용, 변동 가능

 

회원 도메인 설계

 

회원 클래스 다이어그램 - 역할과 구현을 분리 (다형성)

 

 

회원 엔티티 코드와 회원 저장소(Repository)는 생략합니다.

 

회원 서비스

 

회원 서비스 인터페이스 (MemberService)

public interface MemberService {
	void join(Member member);
	Member findMember(Long memberId);
}

 

회원 서비스 구현체 (MemberServiceImpl)

public class MemberServiceImpl implements MemberService {
	private final MemberRepository memberRepository = new MemoryMemberRepository();
    
	public void join(Member member) {
		memberRepository.save(member);
	}
    
	public Member findMember(Long memberId) {
		return memberRepository.findById(memberId);
	}
}

주문 도메인 설계

 

주문 엔티티 코드와 주문 저장소(Repository)는 생략합니다.

 

주문 클래스 다이어그램

주문 서비스

 

주문 서비스 인터페이스 (OrderService)

public interface OrderService {
	Order createOrder(Long memberId, String itemName, int itemPrice);
}

 

주문 서비스 구현체 (OrderServiceImpl)

public class OrderServiceImpl implements OrderService {
	private final MemberRepository memberRepository = new MemoryMemberRepository();
	private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
    
        @Override
	public Order createOrder(Long memberId, String itemName, int itemPrice) {
		Member member = memberRepository.findById(memberId);
		int discountPrice = discountPolicy.discount(member, itemPrice);
		return new Order(memberId, itemName, itemPrice, discountPrice);
	}
}

우선은 메모리 회원 레포지토리고정 할인 정책 사용

 

출처: 스프링 핵심 기본 원리편

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함