본문 바로가기

SPRING/Spring

[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]리팩터링, 새로운 구조와 할인 정책 적용

리팩터링 전

public class AppConfig {
     public MemberService memberService() {
         return new MemberServiceImpl(new MemoryMemberRepository());
}
     public OrderService orderService() {
         return new OrderServiceImpl(
                 new MemoryMemberRepository(),
                 new FixDiscountPolicy());
}
public class AppConfig {

    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }
    // 회원 서비스 객체를 생성하고, 회원 저장소를 의존성으로 주입한다.

    private MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
    // 메모리 기반의 회원 저장소 객체를 생성한다. 이 메서드는 private이므로 클래스 내부에서만 사용된다.

    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }
    // 주문 서비스 객체를 생성하고, 회원 저장소와 할인 정책을 의존성으로 주입한다.

    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }
    // 고정 할인 정책 객체를 생성한다.
}

public class AppConfig {

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

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

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

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