본문 바로가기
강의 실습/스프링 핵심 원리 - 기본편

새로운 구조와 할인 정책 적용

by jint 2026. 4. 3.

· 정액 할인 정책을 정률(%) 할인 정책으로 변경
FixDiscountPolicy -> RateDiscountPolicy

어떤 부분만 변경하면 되는지 확인하면,
AppConfig 의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었다.

사용, 구성의 분리)

사용, 구성의 분리


할인 정책의 변경)

할인 정책의 변경


FixDiscountPolicy -> RateDiscountPolicy 변경해도 구성 영역만 영향을 받고, 사용 영역은 영향을 받지 않는다.

할인 정책 변경 구성 코드)
- src/main/java/hello/core/AppConfig.java

package hello.core;

import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.discount.RateDiscountPolicy;
import hello.core.member.MemberRepository;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.member.MemoryMemberRepository;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;

public class AppConfig {

    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    public DiscountPolicy discountPolicy() {
        // return new FixDiscountPolicy();
        return new RateDiscountPolicy();
    }

}


할인 정책 변경시, 애플리케이션 구성 역할을 담당하는 AppConfig 코드만 변경하면 된다.
클라이언트 코드인 OrderServiceImpl 을 포함한 사용 영역의 어떤 코드도 변경할 필요 없다.

구성 영역이 바뀌는 건 당연한데, 구성 역할을 하는 AppConfig 를 애플리케이션 이라는 공연의 기획자로 비유하면, 공연 기획자는 공연 참여자인 구현체들을 모두 알아야 한다.

-> OCP, DIP 지킴


참고링크 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8?cid=325969

 

스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의

현재 평점 5.0점 수강생 49,524명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프

www.inflearn.com

댓글