인프런의 '스프링 핵심 원리 (기본편)' 을 듣고 해당 내용을 정리한 포스트 입니다.
강의 바로가기
새롭게 정액 할인 정책이 아닌, 정률 할인 정책을 추가한다.
어떻게?
할인 정책을 변경하려면 클라이언트인 'OrderServiceImpl'에서 'FixDiscountPolicy' 대신 'RateDiscountPolicy'를 사용해야 한다.
클래스 의존관계
즉, 클라이언트인 OrderServiceImpl이 DiscountPolicy인터페이스 뿐만 아니라
FixDiscountPolicy와 RateDiscountPolicy도 함께 의존하고 있다!
-> DIP 위반!
정액을 정률로 변경하는 순간, OrderServiceImpl의 소스코드를 변경해야 한다.
-> OCP 위반!
구현체가 없어서 -> NullPolinterException 발생!
문제 해결을 위해선, 누군가가 클라이언트인 'OrderServiceImple'에 DicountPolicy의 구현 객체를 대신 생성하고 주입해주어야 한다.