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
관리 메뉴

개발자되기 프로젝트

정책을 변경해보자. 본문

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

정책을 변경해보자.

Seung__ 2021. 7. 25. 21:49

이전에 할인 정책을 바꾸려다보니 DIP, OCP위반이 발생하여 AppConfig를 도입하여 관심대상을 분리하였다.

 

1. 사용, 구성의 분리


  • 할인 정책은 변경하기 위해서는 구성 영역의 코드만 변경해 주면 된다.
  • 변경 전

  • 변경 후

2. AppConfig 수정


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 RateDiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }
    
}

 

3. Test


 

4. 정리


  • 정책(구현체)를 변경해도 사용 영역의 코드는 변경이 필요 없다.
  • 구성영역의 코드만 변경이 필요하다.
  • AppConfig는 일종의 전체 기획자이다.
  • 확장을 해도 사용 영역의 변경이 필요 없다.
  • 즉, OCP, DIP를 모두 만족하게 되었다.

 

5. GitHub : 210725, change implementation


 

 

GitHub - bsh6463/SpringCoreFunction

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

github.com

 

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

스프링으로 전환~~!  (0) 2021.07.25
IoC, DI, Container  (0) 2021.07.25
Appconfig 리팩터링  (0) 2021.07.25
관심사의 분리  (0) 2021.07.25
정책 변경, DIP & OCP 위반  (0) 2021.07.25
Comments