스프링

OCP, DIP 원칙이 위배되는 역할과 구현 분리

salmon16 2023. 7. 6. 20:46

역할과 구현을 분리하고 다형성을 이용하여 잘 설계를 해도 OCP, DIP 원칙을 위반할 수 있다 .

아래 예시를 보자

OrderServiceImpl은 DiscountPolicy라는 인터페이스에 의존하면서 DIP를 잘 지킨 것 같지만 구현 클래스(Fix, Rate DiscountPolicy)에도 의존하고 있다 그러므로 FixDiscount에서 RateDiscount로 변경하려면 OberServiceImpl 코드를 변경 해야한다 (FixDiscountPolicy주석 처리하고 RateDiscountPolicy 할당) 

 

기대했던 의존관계는 OrderServiceImpl는 DiscountPolicy인터페이스만 의존하기를 원했다 

그렇다고 코드를 아래와 같이 수정을 하면 구현체가 없어서 null point exception이 발생한다.

이 문제를 해결하려면 누군가가 OrderServiceImpl의 DiscountPolicy의 구현 객체를 생성하고 주입해주어야 한다.

출처 : 인프런 스프링 핵심 원리 - 기본 편  김영한

'스프링' 카테고리의 다른 글

AppConfig에서 스프링으로 전환하기  (0) 2023.07.10
AppConfig  (0) 2023.07.06
함수 작성 중 테스트 코드 작성하기  (0) 2023.07.06
JUnit 테스트 코드 작성하기  (0) 2023.07.05
좋은 객체 지향의 설계 SOLID  (0) 2023.07.04