1. 요구사항
회원
회원 가입을 하고 조회
일반과 VIP 두 가지 등급
자체 DB를 구축할 수 있고 외부 시스템과 연동 가능(미확정)
주문과 할인 정책
상품 주문 기능
등급에 따라 할인 정책
모든 VIP는 1000원을 할인해주는 고정 금액 할인 적용(추후 변경 가능)
해당 기능은 적용이 되지 않을 수 있을 수도 있기 때문에 오픈 직전까지 변경 가능(미확정)
해당 프로젝트의 핵심은 최후의 순간까지 결정이 나지 않을 요구사항이 존재
무기한 연기하여 해당 기능을 구현하지 않을 수 없는 상황
SOLID 방식에서 착안하여 인터페이스를 만들고 구현체를 언제든지 변경할 수 있도록 구현
2. 설계
2 - 1. 회원 도메인 설계
회원 정보 객체 생성
회원 등급 Grade : enum
회원 Member : class
회원 정보 저장소
MemberRepository : interface
MemoryMemberRepository : class
회원 정보 처리 서비스
MemberService : interface
MemberServiceImpl : class
문제점 확인
다른 저장소로 변경할 때 OCP(
개방 / 폐쇄 원칙
)원칙을 준수하고 있는가?
이해못함
DIP(
의존관계 역전 원칙
)를 잘 지키고 있는가?
인터페이스 보다는 구현체에 의한 의존이 동시에 이루어지고 있다는 의미(이해못함)
의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점 존재
2 -2. 주문과 할인 도메인 설계