1. 요구사항

  1. 회원
    1. 회원 가입을 하고 조회
    2. 일반과 VIP 두 가지 등급
    3. 자체 DB를 구축할 수 있고 외부 시스템과 연동 가능(미확정)
  2. 주문과 할인 정책
    1. 상품 주문 기능
    2. 등급에 따라 할인 정책
      • 모든 VIP는 1000원을 할인해주는 고정 금액 할인 적용(추후 변경 가능)
      • 해당 기능은 적용이 되지 않을 수 있을 수도 있기 때문에 오픈 직전까지 변경 가능(미확정)

해당 프로젝트의 핵심은 최후의 순간까지 결정이 나지 않을 요구사항이 존재

2. 설계

2 - 1. 회원 도메인 설계

  1. 회원 정보 객체 생성
    1. 회원 등급 Grade : enum
    2. 회원 Member : class
  2. 회원 정보 저장소
    1. MemberRepository : interface
    2. MemoryMemberRepository : class
  3. 회원 정보 처리 서비스
    1. MemberService : interface
    2. MemberServiceImpl : class

문제점 확인

  1. 다른 저장소로 변경할 때 OCP(개방 / 폐쇄 원칙)원칙을 준수하고 있는가?
  2. DIP(의존관계 역전 원칙)를 잘 지키고 있는가?
  3. 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점 존재

2 -2. 주문과 할인 도메인 설계