현재 만들어 놓은 AppConfig를 보면 중복이 있고, 역할에 따른 구현이 잘 보이지 않는다.
이를 수정해보자.
package hello.core;
import hello.core.discount.FixDiscountPolicy;
import hello.core.discount.DiscountPolicy;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.member.MemoryMemberRepository;
import hello.core.member.MemberRepository;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;
public class AppConfig {
public MemberService memberService(){
return new MemberServiceImpl(memberRepository());
}
private MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public OrderService orderService(){
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
private DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
위와 같이 변경해주면,
메서드 명만 봐도 역할이 모두 드러나고(알 수 있고), 추후에 수정할 때, return 부분만 수정해주면 된다.
기존의 new MemoryMemberRepository() 부분의 중복이 제거되었고, memberRepository 메서드를 통해 다른 구현체로 변경할 때 한 부분(return)만 변경해주면 된다.
또한, discountPolicy() 를 보면 어떤 할인 정책을 사용하고 있는지 한 번에 확인할 수 있으므로, 전체 구성이 어떻게 되어있는지 빠르게 파악할 수 있다.
'스프링(Spring) > Spring' 카테고리의 다른 글
[Spring] IoC, DI, 컨테이너 (0) | 2022.07.29 |
---|---|
[Spring] 새로운 구조와 할인 정책 적용 (0) | 2022.07.29 |
[Spring] 관심사 분리 (0) | 2022.07.13 |
[Spring] 객체 지향 원리 적용 (0) | 2022.07.09 |
[Spring] 예제 1 만들기_4(JAVA) (0) | 2022.07.09 |