Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Appconfig 리팩터링 본문

인프런/[인프런] Spring 핵심원리 이해

Appconfig 리팩터링

Seung__ 2021. 7. 25. 21:29

 

현채 AppConfig는 중복이 있고, 역할에 따른 구현이 잘 안보인다.

public class AppConfig {

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

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

}

 

아래와 같이 역할과 구현이 분명히 보이도록 수정해 주자.

  • MemberRepository가 어떤 구현체를 사용할지 분명하게 보임 --> 변경 용이
  • DiscountPolicy가 어떤 구현체를 사용할지 분명하게 보임 --> 변경 용이
  • new MemoryMemberRepository()중복이 제거되었다.
  • 설계에 대한 그림이 Config에 분명히 드러나야 한다.
public class AppConfig {

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

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

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

    private FixDiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }

 

*GitHub : 210725, Refactoring AppConfig


 

 

GitHub - bsh6463/SpringCoreFunction

Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글

IoC, DI, Container  (0) 2021.07.25
정책을 변경해보자.  (0) 2021.07.25
관심사의 분리  (0) 2021.07.25
정책 변경, DIP & OCP 위반  (0) 2021.07.25
새로운 할인 정책 개발  (0) 2021.07.25
Comments