Spring 작업 세팅
https://start.spring.io/ 에서 프로젝트 받기
기존에 8버전으로 설정되어 있어서 에러가 나왔는데
프로젝트 구조->SDK로가서 11로 교체
설정 -> 빌드 -> gradle, Maven 11로 교체
비지니스 요구사항과 설계
- 회원
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구출할 수 있고, 외부 시스템과 연동할 수 있다.(미확정)
- 주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원 할인해주는 고정 금액 할인을 적용해달라.(나중에 변경 가능)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 회착의 경우 할인을 적용하지 않을 수 있다.(미확정)
요구사항의 회원데이터, 할인 정책은 지금 결정 불가 객체 지향 설계 방법을 이용해야한다.(인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계)
회원 도메인 설계
- 회원 도메인 요구사항
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확정)
회원 도메인 설계의 문제점
- 다른 저장소로 변경할 때 OCP원칙을 잘 준수할까요?
- DIP를 잘 지키고 있을까요?
- 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음
private final MemberRepository memberRepository = new MemoryMemberRepository(); 추상화와 구체화에 의존
- 주문까지 만들고나서 문제점과 해결 방안을 설명
주문과 할인 도메인 설계
- 주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원 할인해주는 고정 금액 할인을 적용(나중에 변경 가능)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 있다.(미확정)