본문 바로가기
개인/[java] 스프링 핵심 원리 학습

AppConfig 리팩터링

by hyeley5 2023. 9. 9.
public class AppConfig {

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

    public OrderService orderService() {
        return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
    }

}

 

현재 AppConfig를 보면 역할에 따른 구현이 한 눈에 잘 보이지 않는다.

 

 

public class AppConfig {

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

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

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

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

}

이렇게 수정을 해준다.

 

  new MemoryMemberRepository() 이 부분이 중복 제거됨.

이제 MemoryMemberRepository 를 다른 구현체로 변경할 때 한 부분만 변경하면 된다.

 

AppConfig 를 보면 역할과 구현 클래스가 한눈에 들어온다.

애플리케이션 전체 구성이 어떻게 되어있는지 빠르게 파악할 수 있다!!

댓글