study7. 변경 적용

윤광팔·2022년 2월 5일
0

인프런의 '스프링 핵심 원리 (기본편)' 을 듣고 해당 내용을 정리한 포스트 입니다.
강의 바로가기

새롭게 정액 할인 정책이 아닌, 정률 할인 정책을 추가한다.
어떻게?


할인 정책을 변경하려면 클라이언트인 'OrderServiceImpl'에서 'FixDiscountPolicy' 대신 'RateDiscountPolicy'를 사용해야 한다.

문제점은?

  • 역할과 구현 분리 OK
  • 다형성 활용, 인터페이스와 구현 객체 분리 OK
  • OCP와 DIP 준수? NO!!

클래스 의존관계

  • 추상(인터페이스)뿐만 아니라, 구체(구현)클래스에도 의존하고 있다!
  • 추상 의존: Discount Policy
  • 구현 클래스: FixDiscountPolicy, RateDiscountPolicy

즉, 클라이언트인 OrderServiceImpl이 DiscountPolicy인터페이스 뿐만 아니라
FixDiscountPolicy와 RateDiscountPolicy도 함께 의존하고 있다!
-> DIP 위반!

정액을 정률로 변경하는 순간, OrderServiceImpl의 소스코드를 변경해야 한다.
-> OCP 위반!


인터페이스에만 의존하도록 하자!


구현체가 없어서 -> NullPolinterException 발생!

문제 해결을 위해선, 누군가가 클라이언트인 'OrderServiceImple'에 DicountPolicy의 구현 객체를 대신 생성하고 주입해주어야 한다.

0개의 댓글

관련 채용 정보