처음으로 돌아가서 정액 할인 정책을 정률% 할인 정책으로 변경해 봅시다.
FixDiscountPolicy → RateDiscountPolicy
기존의 코드에서 이것을 바꿨더니 클라이언트에 영향이 있었습니다.
지금은 AppConfig의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었습니다.
배우 영역과 공연 기획 영역이 완전히 분리되었다고 생각하면 됩니다.
그럼 이제 어떤 부분만 변경하면 될까요?
AppConfig만 변경하면 됩니다.
즉, 구성 영역의 코드만 변경하면 되고 사용 영역은 전혀 손 댈 필요가 없습니다.
package hello.core;
import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.discount.RateDiscountPolicy;
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());
}
private MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
private DiscountPolicy discountPolicy() {
//...1
//return new FixDiscountPolicy();
return new RateDiscountPolicy();
}
}
실제로 실행을 해보면 변경된 값으로 정상적으로 출력이 되는 것을 볼 수 있습니다.
🌟 [TIP]
Ctrl + R
마지막으로 실행했던 것 실행