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

jy9922·2022년 8월 18일
0

Spring

목록 보기
16/34
post-thumbnail

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

  • FixDiscountPolicy → RateDiscountPolicy

    AppConfig로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성하는 영역으로 관리되고 있다.

  • FixDiscountPolicy → RateDiscountPolicy 로 변경하면 된다.
public class AppConfig {
    public MemberService memberService(){
        return new MemberServiceImp(memberRepository());
    }

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

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

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

}
  • AppConfig에서 할인 정책 역할을 담당하는 구현을 FixDiscountPolicyRateDiscountPolicy 객체로 변경했다.
  • 할인 정책을 변경해요, 애플리케이션의 구성 역할을 담당하는 AppConfig만 변경하면 된다.
    • 클라이언트 코드를 포함한 사용 영역의 어떤 코드도 변경할 필요가 없다.
  • 구성 영역은 당연히 변경된다.
    • 구성 역할을 담당하는 AppConfig를 공연의 기획자로 생각하면 공연 기획자는 공연 참여자인 구현 객체를 모두 알아야 한다.

  • 클라이언트 코드를 보면 DIP 뿐만 아니라 OCP에 만족한다.
    • OCP : 확장에 열려있고, 변경에 닫혀 있다.
    • FixDiscountPolicyRateDiscountPolicy 할 때, 클라리언트 코드를 변경할 필요가 없다.

0개의 댓글