[spring기본]2. 스프링 핵심 원리 이해 1

이건회·2022년 8월 27일
0

springbasic

목록 보기
2/14

비즈니스 요구사항과 설계

  • 회원 도메인 설계

  • 회원 클래스 다이어그램

  • 먼저 회원 Member 엔티티를 만든다

  • 회원 저장소 인터페이스를 선언해준다.

  • 인터페이스를 상속받아 회원 저장소 구현체를 만들어준다. save와 findById 메소드를 오버라이딩한다.

  • 회원 서비스 인터페이스를 선언한다. 회원 가입, 회원 조회 메소드를 명시한다.

  • 회원 서비스 구현체를 생성한다. 역시 오버라이딩을 통해 상세 로직을 재정의한다.

테스트코드 작성

  • 회원 가입 시 생성한 회원과, findMember로 조회한 회원이 일치하는지 assertThat을 통해 검증한다.

  • 그러나 위와 같은 개발 방법은 의존관계가 인터페이스 뿐만 아니라 구현(MemoryMenberRepository)까지 모두 의존한다는 단점이 있어 DIP를 준수하지 못한다.

주문과 할인 도메인 설계

  • 다음 요구사항을 따르는 주문과 할인 도메인을 설계하자

  • 역할과 구현을 분리하여 자유롭게 구현체를 변경할 수 있는 구조다.

  • 서비스의 변경 없이 할인정책 등 구현체를 갈아끼울 수 있다.

  • 할인 정책 인터페이스와 고정할인 구현체다. 할인 금액을 리턴한다.


  • 주문 엔티티를 만들어준다.

  • 주문 서비스 인터페이스와 주문 서비스 구현체다


  • Junit을 통해 getDiscountPrice로 얻은 할인 금액이 정액 할인금액과 일치하는지 확인한다.

profile
하마드

0개의 댓글