public class AppConfig {
public MemberService memberService() {
return new MemberServiceImpl(new MemoryMemberRepository());
}
public OrderService orderService() {
return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
}
}
현재 AppConfig를 보면 역할에 따른 구현이 한 눈에 잘 보이지 않는다.
public class AppConfig {
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
private static MemoryMemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
이렇게 수정을 해준다.
new MemoryMemberRepository() 이 부분이 중복 제거됨.
이제 MemoryMemberRepository 를 다른 구현체로 변경할 때 한 부분만 변경하면 된다.
AppConfig 를 보면 역할과 구현 클래스가 한눈에 들어온다.
애플리케이션 전체 구성이 어떻게 되어있는지 빠르게 파악할 수 있다!!
'개인 > [java] 스프링 핵심 원리 학습' 카테고리의 다른 글
| 객체 지향 설계의 5가지 중 (SRP, DIP, OCP 적용) (0) | 2023.09.13 |
|---|---|
| 새로운 구조와 할인 정책 적용 (AppConfig만 수정) (0) | 2023.09.09 |
| 관심사의 분리 (0) | 2023.08.28 |
| 새로운 할인 정책 추가 (객체 지향 원리 적용, 문제점···) (0) | 2023.08.28 |
| 주문과 할인 도메인 설계 (0) | 2023.08.21 |
댓글