참고
Spring core basic 시리즈는 김영한 님의 "스프링 핵심 원리 - 기본편" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다. 마크다운을 잘 쓰지 못해서 가독성이 조금 떨어지는 점 양해 바랍니다.
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
새로운 구조와 할인 정책 적용
처음으로 돌아가서 정액 할인 정책을 정률 할인 정책으로 변경해보자.
FixDiscountPolicy -> RateDiscountPolicy
기존에는 클라이언트 코드를 변경했어야 했는데, 이젠 아니다.
AppConfig의 등장으로 인해 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 두 개의 영역으로 분리되었다.
구현체를 FixDiscountPolicy에서 RateDiscountPolicy로 변경할 때 구성 영역의 코드만 변경하면 된다.
AppConfig.java
package com.kloong.corebasic1;
//import 생략
public class AppConfig {
private DiscountPolicy discountPolicy() {
//return new FixDiscountPolicy();
return new RateDiscountPolicy();
}
//생략...
}
이제 할인 정책을 변경해도, 애플리케이션의 구성 역할을 담당하는 AppConfig만 변경하면 된다. 클라이언트 코드인 OrderServiceImpl 를 포함해서 사용 영역의 어떤 코드도 변경할 필요가 없다.
구성 영역은 당연히 변경된다. 구성 역할을 담당하는 AppConfig를 애플리케이션이라는 공연의 기획자로 생각하자. 공연 기획자는 공연 참여자인 구현 객체들을 모두 알아야 한다.
정리
AppConfig를 통해 OCP와 DIP를 만족할 수 있게 되었다!
'Spring > Spring core basic' 카테고리의 다른 글
[Spring core basic] 14 - SOLID가 어떻게 적용되었는가? (0) | 2022.05.02 |
---|---|
[Spring core basic] 13- 중간 정리 (0) | 2022.05.02 |
[Spring core basic] 11 - AppConfig 리팩토링 (0) | 2022.05.02 |
[Spring core basic] 10 - 관심사의 분리 (0) | 2022.05.02 |
[Spring core basic] 09 - 새로운 할인 정책 개발 및 적용 (0) | 2022.05.02 |
댓글