문제상황할인 정책은 두 가지가 있다.1. FixDiscountPolicy() : 고정 할인2. RateDiscountPolicy() : 비율 할인 이때 우리는 할인 정책을 변경하기 위해 FixDiscountPolicy()에서 RateDiscountPolicy()으로 바꾸려고 한다. 여기서 문제 발생! 우리는 역할과 구현을 충실하게 분리했다. OK 다형성도 활용하고, 인터페이스와 구현 객체를 분리했다. OK OCP, DIP 같은 객체지향 설계 원칙을 충실히 준수했다. -> 그렇게 보이지만 사실은 아니다. DIP: 주문서비스 클라이언트(OrderServiceImpl )는 DiscountPolicy 지킨 것 같은데?클래스 의존관계를 분석해 보자.추상(인터페이스) 뿐만 아니라 인터페이스에 의존하면서 ..