녕의 학습 기록
[Spring 기본] 객체 지향 원리 적용 (3) 본문
♪ 학습 내용
AppConfig 리팩터링 / SOLID 적용
* AppConfig
현재 AppConfig를 보면 중복이 존재하고, 역할에 따른 구현이 잘 보이지 않음
리팩터링을 통해 중복을 제거하고 역할에 대한 구현을 한눈에 보기 쉽게
- 기존 new()연산자 중복 제거 ( memberRepository()를 새로 만들음으로써 )
- 메서드 명을 통해 역할이 잘드러난다
- 그 역할에 대한 구현을 한눈에
* 정률할인정책으로 변경
AppConfig를 통해 관심사를 분리하기 이 전에는 구현체를 변경하려면 클라이언트 코드를 직접 변경해야만 했다.
(OCP위반)
이제는 AppConfig의 코드만 변경해주면 끝
실제로 위처럼 간단하게 바꿔주고 실행하니 정률할인정책으로 정상 실행되는 것을 확인할 수 있었다.
* 좋은 객체 지향 설계 SOLID를 적용
- SRP 단일 책임 원칙
클라이언트 : 구현 객체 생성, 연결, 실행 책임
관심사 분리 후에는 ! !
AppConfig : 구현 객체 생성, 연결책임
클라이언트: 실행 책임만
- DIP 의존관계 역전 원칙
클라이언트 코드가 추상화 인터페이스에만 의존
단 구현체가 없으면 실행할 수가 없으므로 외부(AppConfig)에서 의존관계를 주입(DI)해주었다.
이로써 DIP를 따른다
- OCP 개방폐쇄 원칙
애플리케이션을 사용 영역과 구성 영역으로 나누고,
AppConfig가 의존관계를 변경해서 클라이언트에 주입(DI)해주기 때문에 클라이언트 코드 변경 x
새롭게 확장하면서도 사용 영역의 변경은 닫혀있다.
따라서 OCP 따른다
♪ 다음 학습 내용
본격적으로 스프링과 관련된 용어 등장한다
IoC, DI, 컨테이너..
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'Dev > Spring' 카테고리의 다른 글
[Spring 기본] 스프링 컨테이너와 빈 (1) (0) | 2022.11.05 |
---|---|
[Spring 기본] 객체d 지향 원리 적용 (4) (0) | 2022.11.01 |
[Spring 기본] 객체 지향 원리 적용 (2) (0) | 2022.10.31 |
[Spring 기본] 객체 지향 원리 적용 (1) (0) | 2022.10.30 |
[Spring 기본] 핵심 원리 예제 (4) (0) | 2022.10.28 |