이제는 할인 정책으로 FixDiscountPolicy 대신 RateDiscountPolicy를 사용해볼 것이다.
AppConfig의 등장으로 다음과 같이 사용 영역과 구성 영역이 분리되어 있다.
그래서 RateDiscountPolicy로 바꾸기 위해서는 그냥 AppConfig을 재연결해주면 된다.
구성 영역만 영향을 받고, 사용 영역은 전혀 영향을 받지 않아 효율적이다.
코드로 보면,,
애초에 객체 정의 파트를 따로 두었기 때문에 다음과 같이 객체 정의 부분인 discountPolicy() 속 코드만 고치면 된다.
<OrderApp 실행 결과>
좀 더 확실히 하기 위해 itemPrice=20000으로 두면 discountPrice=2000 이 됨
-> RateDiscountPolicy가 잘 적용된 걸 알 수 있다.
할인 정책을 변경해도, 애플리케이션의 구성 역할을 담당하는 AppConfig만 변경하면 된다.
OrderServiceImpl과 같은 사용 영역은 안 건드려도 된다.
구성 역할을 담당하는 AppConfig를 애플리케이션이라는 공연의 기획자로 생각하면,
공연 기획자(AppConfig)는 공연 참여자(구현 객체)들을 모두 알아야 한다.
'백엔드 > 스프링' 카테고리의 다른 글
[Inflearn] 좋은 객체지향 설계의 5가지 원칙 적용 (0) | 2025.02.24 |
---|---|
[Inflearn] AppConfig 리팩터링(DIP 만족) (0) | 2025.02.23 |
[Inflearn] 새로운 할인 정책 적용의 문제점 & 해결방안(관심사 분리) (SRP 만족) (0) | 2025.02.07 |
[Inflearn] 새로운 할인 정책 개발 (0) | 2025.02.02 |
[Inflearn] 주문과 할인 도메인 개발 (0) | 2025.01.30 |