doriver 2024. 1. 29. 19:04

OrderServiceImpl.java 파일에 아래와 같은 코드상황이 있는경우  

 

DIP 위반

추상( 인터페이스 )에만 의존해야하는데
구체적인 구현 클래스에( FixDiscountPolicy , RateDiscountPolicy )도 의존하는 상황

 

OCP 위반

FixDiscountPolicy 를 RateDiscountPolicy 로 변경하는 순간 OrderServiceImpl 의 소스코드도 함께 변경해야 한다!

( 기능변경하면 코드에 영향 준다 )

 

어떻게 해결할수 있을까?

int discountPrice = discountPolicy.discount(member, itemPrice);

위와같이 하면, discountPolicy를 사용하는 상황에서 NullPointerException 과 같은 에러 발생

이 문제를 해결하려면 
누군가가 클라이언트인 OrderServiceImpl에
DiscountPolicy의 구현 객체를 대신 생성하고 주입해주어야 한다