ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 예제 만들기
    BackEnd/Spring 2022. 7. 22. 22:44

    https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

     

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

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

    www.inflearn.com

     

    - Java 11

    - IDE: IntelliJ

     

    * 스프링 없는 순수 자바로만 개발 진행

    - 스프링 부트 스타터를 이용하여 스프링 프로젝트 생성

    https://start.spring.io/

     

     

    - 비즈니스 요구사항과 설계


    < 회원> 

    1)  회원 도메인 설계

    - 회원은 가입(join)과 조회(find) 가능

    - 회원은 일반(basic)과 vip 두가지 등급

    - 회원 데이터는 자체 DB 구축 or  외부 시스템 연동

    - 역할(interface) 과 구현(implement)으로 분리하여 설계

     

     

    2) 회원 도메인 개발

    member package

    - 회원 등급

    - 회원 객체

     

     

    3) 회원 저장소

    - MemberRepository 인터페이스

    : 언제든지 구현체 바꿀 수 있도록 역할이랑 구현을 잘 나눠놓자

     

     

    -  MemoryMemberRepository 구현 객체

     

    4) 회원 서비스(가입, 조회)

    - MemberService 인터페이스

     

    - MemberServiceImpl 구현 객체

    : 어쨌거나 MemoryMemberRepository를 수동으로 바꿔줘야하므로 역할과 구현이 잘 분리되어있진 않음

     

    5) 회원 도메인 실행과 테스트

    - JUnit Test

    : 위 방법대신 @Test를 이용함


    <주문과 할인>

     

    1) 주문과 할인 도메인 설계

    클래스 다이어그램

     

    역할과 구현을 분리해서 설계했기 때문에 구현체를 언제든지 교체할 수 있음!

     

     

    2) 주문과 할인 도메인 개발

    - DiscountPolicy 할인 정책 인터페이스

     

    - FixDiscountPolicy 할인정책 구현체

    : 회원 등급이 vip면 고정 1000원 할인

     

     

    - 주문 엔티티

    객체 출력시 toString()이 출력되게끔함

     

     

    - OrderService 주문 서비스 인터페이스

    :주문 생성

    - OrderServiceImpl 주문 서비스 구현체

    3) 주문과 할인 정책 테스트

    - class 실행

    - JUnit 단위 테스트

    4)  새로운 할인 정책 개발

    - vip면 1000원 고정 할인이 아니라 10% 정률 할인으로 바꾸기

    - 인터페이스랑 구현체를 잘 분리해뒀으니 정률 할인하는 구현체 class만 새로 생성하자

    - RateDiscountPolicy implement

    - 테스트 작성


    문제점!!

     

    - 할인 정책을 변경하려면 클라이언트 코드(orderserviceImpl) 을 고쳐야함

    - DIP 미준수 : DiscountPolicy 인터페이스랑 implement 모두 의존하고 있음

    - OCP 미준수: 기능을 확장해서 변경하면 클라이언트 코드에 영향을 줌

    'BackEnd > Spring' 카테고리의 다른 글

    [Spring] 싱글톤 컨테이너  (0) 2022.08.02
    [Spring] 예제에 객체 지향 원리 적용해보기  (0) 2022.07.27
Designed by Tistory.