Spring/Spring Core

정률 할인 정책 적용 / 문제점

민철킹 2021. 3. 4. 21:22

1. 할인 정책 변경

👇

👇

 

 

 


 

😡😡문제점😡😡

 

역할과 구현을 충실히 분리했음. 다형성도 활용, 인터페이스와 구현 객체를 분리했음.

 

BUT

 # DIP

  • 클래스 의존관계를 보면 OrderServiceImpl은 추상(인터페이스)뿐만 아니라 구체(구현)클래스에도 의존하고 있다.
  • 추상 : DiscountPolicy
  • 구체 : FixDiscountPolicy / RateDiscountPolicy

우리가 설계한 의존 관계

실제 의존 관계

  • 클라이언트인 OrderServiceImpl이 인터페이스와 구현체를 함께 의존하고 있다.
  • DIP 위반❌❌

 

 

 # OCP

  • 기능을 확장하여 변경하려고하면, 클라이언트 코드에 영향을 준다. (FixDiscountPolicy를 RateDiscountPolicy로 수정)

  • 할인 정책을 정액할인에서 정률할인으로 변경하려고 하면 OrderServiceImpl의 소스코드 또한 변경해야함.
  • OCP위반❌❌

 

 

⚔해결책⚔

  • DIP를 위반하지 않도록 인터페이스에만 의존하도록 의존관계를 변경

  • 인터페이스에만 의존하도록 설계와 코드를 변경
  • 하지만 구현체가 없는데 어떻게 코드를 실행할까?
  • 실제 만들어놓은 주문서비스테스트를 실행시켜보면 오류발생(NullPointerException)
    • 인터페이스에 아무것도 안들어가있으니까

 

이 문제를 해결하기 위해서는 누군가 클라이언트인 OrderServiceImpl에 DiscountPolicy의 구현 객체를 대신 생성하고 주입해주어야함. 

구현 객체를 생성하여 의존관계를 주입해주는 과정을 이제 알아보려한다.

반응형

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

AppConfig 리팩토링 / 할인 정책 적용  (0) 2021.03.05
관심사의 분리  (0) 2021.03.04
새로운 할인 정책  (0) 2021.03.04
주문과 할인 도메인 실행 / 테스트  (0) 2021.03.04
주문과 할인 도메인 설계 / 개발  (0) 2021.03.03