Spring/Spring Core
AppConfig 리팩토링 / 할인 정책 적용
민철킹
2021. 3. 5. 17:23
현재 AppConfig에는 중복이 있고, 역할에 따른 구현이 잘 보이지 않는다.
- MemoryMemberRepository가 중복되어 사용되고 있음.
- 메소드로 꺼내어 사용
- 또한 어떤 역할(인터페이스)를 사용하여 구현을 했는지가 보이지 않는다.
- MemoryMemberRepository는 MemberRepository의 역할을 수행하는데 그것을 확인할 수 없음.
👇
👇
- 다음과 같이 중복을 제거하고 메소드를 추출하였다
- 어떤 역할(인터페이스)에서 어떤 구현체를 사용한 것인지 한 눈에 확인할 수 있다.
- 이는 만약 회원 저장소가 변경될 때 (DB를 사용하거나 jdbc를 연동할 때) memberRepository안의 구현체만 변경해주면 된다.
- 전체 애플리케이션의 구성이 어떻게 되어있는지 파악가능
정액 할인을 정률 할인으로 바꾸려한다. 어느 부분만 바꾸면 될까?
AppConfig만 변경하면 된다.
- 이 부분만 FixDiscountPolicy를 RateDiscountPolicy로 변경해주면 할인 정책이 변경된다.
테스트를 해보자
Junit 테스트 정상 동작!!
- 물건 가격을 20000원으로 변경해보았다.
- 10%할인이므로 2000원이 할인되어야함
테스트 성공!
🌟사용영역에 있는 OrderServiceImpl은 전혀 수정할 필요가 없어졌다. 어떤 정책 변경이 있더라도🌟
OCP원칙 만족, DIP 원칙 만족
반응형