1. 비즈니스 요구사항
회원
- 기능 : 회원 가입, 회원 조회
- 등급 : 일반 회원, VIP 회원 (2가지 등급)
- 회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있다. (미정)
주문/할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 모든 VIP는 1000원을 할인해주는 고정 할인이 있다. (추후 변경 가능)
- 할인 정책 : 변경 가능성이 높다. 오픈 직정까지 고민을 미루고 싶다 (미확정)
📌 참고
이번 프로젝트는 스프링 없는 순수한 자바로만 개발을 진행한다.
2. 설계
2-1. 회원 관련 설계
- 기획자들도 볼 수 있는 다이어그램
- 이를 바탕으로, 개발자들이 클래스 다이어그램을 그림
- DB를 어떻게 구축할지가 미정이기 때문에, 각 저장소 구현체들을 다양하게 만들어본다.
- 메모리 회원 저장소 : 서버 켜면 그냥 메모리에만 저장되는, 개발용으로 사용하는 저장소
- 객체(구현체) 다이어그램 : 사실 동적으로 결정됨. 서버가 뜨면 사용자가 '실제로' 사용하는, 유효한 인스턴스와 관련된 다이어그램
📣 백문이불여일타
코드도 직접 쳐보는 것이 가장 좋다!
2-2. 주문과 할인 설계
📌 참고 1
여기에서는, 예제를 단순히 하기 위해 상품 클래스를 만들지 않고 그냥 상품 데이터를 넘겨 주문을 하기로 한다. 실무에서는 당연히 'Item' 등의 객체로 만들어서 하는 것이 일반적이다.
📌 참고 2
주문 정보를 DB에 저장하는 로직도, 예제를 단순히 하기 위해 생략한다.
👉🏻 역할과 구현이 이렇게 명확하게 구분되면, 회원 저장소와 할인 정책을 마치 레고 조립하듯이 자유롭게 조립할 수 있게 된다!
클래스 다이어그램
객체 다이어그램들