Spring/Spring core basic

[Spring core basic] 05 - 회원 도메인 설계

Kloong 2022. 5. 2. 01:04

참고

더보기

Spring core basic 시리즈는 김영한 님의 "스프링 핵심 원리 - 기본편" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다. 마크다운을 잘 쓰지 못해서 가독성이 조금 떨어지는 점 양해 바랍니다.

 

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

회원 도메인 설계

비즈니스 요구사항

회원

  1. 회원을 가입하고 조회할 수 있다.
  2. 회원은 일반과 VIP 두 가지 등급이 있다.
  3. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)

주문과 할인 정책

  1. 회원은 상품을 주문할 수 있다.
  2. 회원 등급에 따라 할인 정책을 적용할 수 있다.
  3. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)
  4. 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정)

회원 도메인 요구사항

  1. 회원을 가입하고 조회할 수 있다.
  2. 회원은 일반과 VIP 두 가지 등급이 있다.
  3. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)

회원 도메인 설계

회원 도메인 협력 관계

회원 데이터에 접근하는 방식은 아직 미확정이므로, "회원 저장소" 인터페이스를 만든 뒤 개발을 진행한다. 테스트용 구현체가 필요하므로, 메모리에 데이터가 저장되는 "메모리 회원 저장소" 구현체를 만들어서 테스트한다. 추후에 데이터 접근 방식이 확정되면 해당 구현체로 바꾼다.

회원 클래스 다이어그램

MemberServiceImpl은 구현체. 역할과 구현으로 구분되어있긴 하지만 실제 구현체는 하나만 만들 것이다. 구현체가 하나만 있는 경우 관례상 "interface 이름 + Impl"을 많이 사용한다.

회원 객체 다이어그램

*"회원 서비스"가 아니라 "MemberServiceImpl"이다. 오타임.

실제 객체 간의 실제 참조는 위와 같다. (인터페이스가 아닌 실제 구현 클래스의 객체에 대한 참조)

설계를 하면 다이어그램이 위와 같이 3가지 정도의 종류로 그려진다.

첫 번째 다이어그램은 기획자도 볼 수 있는 다이어그램. 해당 다이어그램을 가지고 개발자들이 2번째 다이어그램을 만든다. 2번째 다이어그램은 코드만 보고 그릴 수 있지만, 코드가 실행될 때 실제로 사용되는 객체는 동적으로 결정되므로 2번째 다이어그램에서는 해당 정보를 알 수 없다. 따라서 3번째 다이어그램을 만들어서 실제 객체에 대한 참조 관계를 표현한다.