현재 AppConfig를 보면 중복
이 있고, 역할
에 따른 구현
이 잘 안보입니다.
기대하는 그림
리팩터링 전
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();
}
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
new MemoryMemberRepository()
이 부분이 중복 제거되었습니다. 이제MemoryMemberRepository
를 다른 구현체로 변경할 때 한 부분만 변경하면 됩니다.AppConfig
를 보면 역할과 구현 클래스가 한눈에 들어옵니다. 애플리케이션 전체 구성이 어떻게 되어있는지 빠르게 파악할 수 있습니다.
참조
'Spring' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 전체 흐름 정리 (0) | 2021.09.09 |
---|---|
[스프링 핵심 원리 - 기본편] 새로운 구조와 할인 정책 적용 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 관심사의 분리 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 새로운 할인 정책 적용과 문제점 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 새로운 할인 정책 개발 (0) | 2021.09.08 |
댓글