오늘은 새로운 할인 정책 적용과 문제점에 대해 공부한다
할인정책을 변경하려면 OrderServiceImpl의 코드를 변경해야 한다
인터페이스 뿐만 아니라 구체(구현)클래스에도 의존하고 있다(DIP 위반)
FixDiscountPolicy->RateDiscountPolicy로 변경하는 순간 OrderServiceImpl의 소스코드도 변경해야 하므로 OCP위반이다
구현클래스에 의존하는 것이 아닌 인터페이스에만 의존하게 설계하기
인터페이스에만 의존하게 변경했지만 구현체가 없으므로 실행이 안된다
이 문제를 해결하려면 OrderServiceImple에 DiscountPolicy의 구현 객체를 대신 생성하고 주입해야한다