[Spring 기본] 객체 지향 원리 적용 (1)Dev/Spring2022. 10. 30. 02:05
Table of Contents
♪ 학습 내용
개발한 코드에서 구현체 변경(고정할인 → 정률 할인)
즉, 객체 지향적으로 잘 개발했는지 확인
* 새로운 할인 정책 테스트
정률할인정책으로 변경하기 위해 RateDiscountPolicy를 새로 만들고 테스트 실행
- @DisplayName 애너테이션을 이용하면 테스트를 한글 이름으로 표시할 수 있다.
- on demand static import를 이용하면 아래 코드블럭 내에 두번째 코드처럼 더욱 간결히 가능
Assertions.asserThat(discount).isEqualTo(0);
assertThat(discount).isEqualTo(0);
- 테스트는 실패 확인용 테스트도 꼭 만들어봐야 한다
* 새로운 정책 적용의 문제점
클라이언트인 OrderServiceImpl
할인 정책 구현체를 바꾸려면 사진과 같이 직접 수정해주어야 한다
문제점
1. 추상(인터페이스)뿐만 아니라 구현 클래스에도 의존하고 있다 → DIP 위반
2. 기능을 확장 변경하면 클라이언트 코드에 영향을 준다 → OCP 위반
* 문제 해결 방안
간단하게 생각하면 DIP를 위반하지 않도록 구체 클래스를 지워버리면, 인터페이스에만 의존한다
인터페이스에만 의존
하지만 구현체가 없어서 실행 시 돌아가지 않는다 ( Null Pointer Exception 발생 )
따라서 누군가가 클라이언트(OrderServiceImpl)에 구현 객체를 대신 생성하고 주입해주어야 한다.
♪ 다음 학습 내용
구현체가 없어 실행되지 않는 상황 해결
'Dev > Spring' 카테고리의 다른 글
[Spring 기본] 객체 지향 원리 적용 (3) (0) | 2022.11.01 |
---|---|
[Spring 기본] 객체 지향 원리 적용 (2) (0) | 2022.10.31 |
[Spring 기본] 핵심 원리 예제 (4) (0) | 2022.10.28 |
[Spring 기본] 핵심 원리 예제 (3) (0) | 2022.10.27 |
[Spring 기본] 핵심 원리 예제 (2) (0) | 2022.10.27 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!