AppConfig의 등장으로 애플리케이션이 크게 사용영역과 , 객체를 생성하고 구성(Configuration)하는 영역으로 분리 되었다.
AppCofig
public class AppConfig {
private MemberRepository memberRepository() { // 객체 생성을 메소드 처리
return new MemoryMemberRepository(); // 새로운 구현체를 주입 하고 싶다면 new 객체를 수정하면 된다.
}
public DiscountPolicy discountPolicy(){ // 객체 생성을 메소드 처리
//return new FixDiscountPolicy(); // 새로운 구현체를 주입 하고 싶다면 new 객체를 수정하면 된다.
return new RateDiscountPolicy();
}
public MemberService memberService(){
return new MemberServiceImpl(memberRepository());
}
public OrderService orderService(){
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
}
FixDiscountPolicy -> RateDiscountPolicy 객체로 변경했다.
사용 영역의 어떤 코드도 변경할 필요가 없다.
정리
새로운 할인 정책 개발 적용 시 DIP 위반 , 이 를 해결하고자 AppConfig 등장
관심사의 분리
AppConfig는 애플리케이션의 전체 동작 방식 구성(Config)하기 위해 , "구현 객체를 생성"하고 "연결"하는 책임
이제부터 클라이언트 객체는 자신의 역할을 실행하는 것만 집중 , 권한이 줄어듬(책임이 명확해짐)
AppConfig 리팩토링
구성 정보에서 역할과 구현을 명확하게 분리
중복 제거
새로운 구조와 할인 정책 적용
AppConfig의 등장으로 애플리케이션이 크게 "사용 영역"과 , 객체를 생성하고 "구성(Configuration)하는 영역" 으로 분리
객체 지향 원리 적용 - 새로운 구조와 할인 정책 적용
정액 할인을 정률 할인으로 변경하자
AppConfig의 등장으로 애플리케이션이 크게 사용영역과 , 객체를 생성하고 구성(Configuration)하는 영역으로 분리 되었다.
AppCofig
정리
스프링 핵심 원리 - 기본편 - 인프런
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온
www.inflearn.com
'스프링 핵심 원리 > 스프링 핵심 원리 이해' 카테고리의 다른 글