-
새로운 할인 정책 적용과 문제점spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 6. 17:43
새로운 할인 정책을 사용하려면 아래와 같이 필수적으로 OrderService의 수정이 일어난다
- 우리는 역할과 구현을 충실하게 분리했다
- 다형성도 활용하고, 인터페이스와 구현 객체도 분리했다
- OCP, DIP 같은 객체지향 설계 원칙을 충실하게 준수했다
- 그렇게 보이지만 사실은 아니다
- 클래스 의존관계를 분석해 보자. 추상(인터페이스) 뿐만 아니라 구체(구현)클래스에도 의존하고 있다
- 추상 의존 : DiscountPolicy
- 구체 클래스 : FixDiscountPolicy, RateDiscountPolicy
- DIP 위반
- OCP : 기능을 확장해서 변경하려면 지금처럼 클라이언트 코드에 영향을준다
- OCP 위반
어떻게 이 문제를 해결할 수 있을까?
DIP 위반 -> 추상에만 의존하도록 변경
위외같이 간단히 생각해서 시도해 보자수정 이후 테스트 실행 결과 nullPoint 에러를 만나게 된다
당연한 것이, 구체적인 값 없이 인터페이스만으로 어떻게 로직을 실행시키겠나
이 문제를 해결하려면 누군가가 클라이언트인 OrderServiceimpl에 DiscountPolicy의
구현 객체를 대신 생성하고 주입해 주어야 한다다음엔 그 방법을 알아보자
'spring > 스프링 핵심 원리 강의 내용 정리' 카테고리의 다른 글
AppConfig 리팩터링 (2) 2023.12.06 관심사의 분리 (0) 2023.12.06 새로운 할인 정책 개발 (1) 2023.12.06 주문과 할인 도메인 실행과 테스트 (1) 2023.12.06 주문과 할인 도메인 개발 (0) 2023.12.06