이러한 형태의 서비스를 만들어야 함
순수하게 자바로 개발한 후에 고정할인이 아니라 금액에 따라 가격을 정하려고 함수를 만들었을때
문제가 발생함
- 새로 개발한 정률 할인 정책을 적용하려고 하니 클라이언트 코드인 주문 서비스 구현체도 함께 변경해야함 주문 서비스 클라이언트가 인터페이스인 'DiscountPolicy' 뿐만 아니라, 구체 클래스인 'FixDiscountPolicy' 도 함께 의존 DIP 위반
더보기
AppConfig를 추가함으로 전체적인 컨트롤을 할 수 있도록 함
package hello.core;
import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.member.MemberRepository;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.member.MemoryMemberRepository;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;
public class AppConfig {
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
}
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
'Spring > 스프링_정리' 카테고리의 다른 글
[베이직] 스프링 컨테이너와 스프링 빈 조회 (1) | 2024.01.08 |
---|---|
[인프런베이직] 객체지향설계의 5가지 원칙 중 3개 (0) | 2023.12.21 |
[스프링 - 스프링 입문] 회원 도메인과 리포지토리 만들기 (0) | 2023.12.13 |
[인프런-스프링입문] 스프링 웹 개발 기초 (0) | 2023.12.13 |
[인프런 - 스프링 입문] 스프링 환경설정 (0) | 2023.12.13 |