녕의 학습 기록

[Spring 기본] 객체 지향 원리 적용 (3) 본문

Dev/Spring

[Spring 기본] 객체 지향 원리 적용 (3)

kjyyjk 2022. 11. 1. 00:47

 학습 내용 

 

AppConfig 리팩터링 / SOLID 적용


* AppConfig

 

현재 AppConfig를 보면 중복이 존재하고, 역할에 따른 구현이 잘 보이지 않음

 

리팩터링을 통해 중복을 제거하고 역할에 대한 구현을 한눈에 보기 쉽게

 

리팩터링 후 AppConfig

- 기존 new()연산자 중복 제거 ( memberRepository()를 새로 만들음으로써 )

 

- 메서드 명을 통해 역할이 잘드러난다

 

- 그 역할에 대한 구현을 한눈에

 

* 정률할인정책으로 변경

 

AppConfig를 통해 관심사를 분리하기 이 전에는 구현체를 변경하려면 클라이언트 코드를 직접 변경해야만 했다.

(OCP위반)

 

이제는 AppConfig의 코드만 변경해주면 끝

 

 

구성 영역만 영향을 받고 사용 영역은 전혀 영향x

 

실제로 위처럼 간단하게 바꿔주고 실행하니 정률할인정책으로 정상 실행되는 것을 확인할 수 있었다.

 

* 좋은 객체 지향 설계 SOLID를 적용

 

- SRP 단일 책임 원칙

 

클라이언트 : 구현 객체 생성, 연결, 실행 책임

 

관심사 분리 후에는 ! !

 

AppConfig : 구현 객체 생성, 연결책임

클라이언트: 실행 책임만

 

- DIP 의존관계 역전 원칙

 

클라이언트 코드가 추상화 인터페이스에만 의존

 

단 구현체가 없으면 실행할 수가 없으므로 외부(AppConfig)에서 의존관계를 주입(DI)해주었다.

 

이로써 DIP를 따른다

 

- OCP 개방폐쇄 원칙

 

애플리케이션을 사용 영역과 구성 영역으로 나누고,

 

AppConfig가 의존관계를 변경해서 클라이언트에 주입(DI)해주기 때문에 클라이언트 코드 변경 x

 

새롭게 확장하면서도 사용 영역의 변경은 닫혀있다.

 

따라서 OCP 따른다

 


 다음 학습 내용 

 

본격적으로 스프링과 관련된 용어 등장한다

 

IoC, DI, 컨테이너..

 

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com