[스프링 핵심원리 기본편] 섹션2. 스프링 핵심 원리 이해1 - 예제 만들기

jada·2023년 10월 18일
0

Spring 스터디

목록 보기
7/35

프로젝트 생성

dependency 아무것도 추가하지 않으면 SpringBoot가 Spring core 쪽 라이브러리만 가지고 간단하게 구성해준다.


비즈니스 요구사항과 설계

인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계해야 한다.



회원 도메인 설계

회원 클래스 다이어그램 (정적인 개념)

회원 객체 다이어그램 (동적인 개념) - 객체들 간의 참조관계



회원 도메인 개발


회원 도메인 실행과 테스트

회원 도메인 설계의 문제점

  • 다른 저장소로 변경할 때 OCP 원칙을 잘 준수하는가?

  • DIP를 잘 지키고있는가?

  • 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있다.

    • MemberServiceImpl이 MemberRepository 뿐만 아니라 MemoryMemberRepository 까지 모두 의존한다. -> DIP 위반 !


주문과 할인 도메인 설계

주문 도메인 협력, 역할, 책임

  • 역할과 구현을 분리: 자유롭게 구현 객체를 조립할 수 있게 설계했다. 회원 저장소는 물론이고, 할인 정책도 유연하게 변경할 수 있다.

주문 도메인 클래스 다이어그램

주문 도메인 객체 다이어그램1

  • 회원을 메모리에서 조회하고, 정액 할인 정책을 지원해도 주문 서비스를 변경하지 않아도 된다.
  • 역할들의 협력 관계를 그대로 재사용할 수 있다.

주문 도메인 객체 다이어그램2

  • 회원을 메모리가 아닌 실제 DB에서 조회하고, 정률할인정책을 지원해도 주문 서비스를 변경하지 않아도 된다.
  • 협력 관계를 그대로 재사용할 수 있다.


주문과 할인 도메인 개발



주문과 할인 도메인 실행과 테스트

main메서드 실행

단위 테스트 실행

profile
꾸준히 발전하는 개발자가 되자 !

0개의 댓글