리팩토링 후
new MemoryRepository() 부분이 중복 제거되었다. 그리고 MemberRepository 구현체를 변경할 때는 아래 17번째 줄만 변경해주면 된다!
아래의 AppConfig를 보면 역할과 구현 클래스가 한 눈에 들어온다! 애플리케이션 전체 구성이 어떻게 되어있는지 빠르게 파악할 수 있다!
packagehello.core;importhello.core.discount.FixDiscountPolicy;importhello.core.member.MemberRepository;importhello.core.member.MemberService;importhello.core.member.MemberServiceImpl;importhello.core.member.MemoryMemberRepository;importhello.core.order.OrderService;importhello.core.order.OrderServiceImpl;publicclassAppConfig{publicMemberServicememberService() {returnnewMemberServiceImpl(memberRepository());//객체 생성하고 구현체 할당하는 것을 안에서 직접했었다. }privateMemberRepositorymemberRepository() {returnnewMemoryMemberRepository(); }publicOrderServiceorderService() {returnnewOrderServiceImpl(memberRepository(), discountPolicy());//객체 생성하고 구현체 할당하는 것을 안에서 직접했었다. }privateFixDiscountPolicydiscountPolicy() {returnnewFixDiscountPolicy(); }}