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