AppConfig
의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었습니다.
사용, 구성의 분리
할인 정책의 변경
FixDiscountPolicy
=>RateDiscountPolicy
로 변경해도 구성 영역만 영향을 받고, 사용 영역은 전혀 영향을 받지 않습니다.
할인 정책 변경 구성 코드
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();
}
}
- 이제 할인 정책을 변경해도, 애플리케이션의 구성 역할을 담당하는 AppConfig만 변경하면 됩니다. 클라이언트 코드인
OrderServiceImpl
을 포함해서사용 영역
의 어떤 코드도 변경할 필요가 없습니다. 구성 영역
은 당연히 변경됩니다. 구성 역할을 담당하는 AppConfig를 애플리케이션이라는 공연의 기획자로 생각합니다. 공연 기획자는 공연 참여자인 구현 객체들을 모두 알아야 합니다.
참조
'Spring' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 좋은 객체 지향 설계의 5가지 원칙의 적용 (0) | 2021.09.09 |
---|---|
[스프링 핵심 원리 - 기본편] 전체 흐름 정리 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] AppConfig 리팩터링 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 관심사의 분리 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 새로운 할인 정책 적용과 문제점 (0) | 2021.09.09 |
댓글