본문 바로가기
백엔드/스프링

[Inflearn] 새로운 구조와 할인 정책 적용 (OCP 만족)

by dustnn 2025. 2. 24.

이제는 할인 정책으로 FixDiscountPolicy 대신 RateDiscountPolicy를 사용해볼 것이다.

 

AppConfig의 등장으로 다음과 같이 사용 영역과 구성 영역이 분리되어 있다.

 

그래서 RateDiscountPolicy로 바꾸기 위해서는 그냥 AppConfig을 재연결해주면 된다.

구성 영역만 영향을 받고, 사용 영역은 전혀 영향을 받지 않아 효율적이다.

 

코드로 보면,,

애초에 객체 정의 파트를 따로 두었기 때문에 다음과 같이 객체 정의 부분인 discountPolicy() 속 코드만 고치면 된다.

 

<OrderApp 실행 결과>

 

좀 더 확실히 하기 위해 itemPrice=20000으로 두면 discountPrice=2000 이 됨

-> RateDiscountPolicy가 잘 적용된 걸 알 수 있다.

 

할인 정책을 변경해도, 애플리케이션의 구성 역할을 담당하는 AppConfig만 변경하면 된다.

OrderServiceImpl과 같은 사용 영역은 안 건드려도 된다.

구성 역할을 담당하는 AppConfig를 애플리케이션이라는 공연의 기획자로 생각하면,

공연 기획자(AppConfig)는 공연 참여자(구현 객체)들을 모두 알아야 한다.