관심사의 분리

qkrrnjswo·2023년 4월 13일
0

Inflearn Spring

목록 보기
5/13


위 코드는 DIP를 위반하고 있다.
해결책은 OrderServiceImpl가 interface만 의존하도록 바꿔야한다.


그러나 OrderServicImpl이 interface만 의존한다면 Null을 가리키는 오류가 발생한다. 어떻게 해야할까?

관심사를 분리하자!

예를 들어 로미오와 줄리엣 연극이 있다고 했을때,
첫번째 그림은 로미오역의 배우가 줄리엣 배우를 정하는 상황이 된다.
하지만 그건 배우가 정하는 것이 아니다.
배우는 상대 배우가 누구던지 똑같이 공연할 수 있어야 한다.

따라서 공연을 구성, 배우를 섭외, 배우를 지정하는 책임을 가진
다른 누군가가 있어야 한다.

배우에게서 배우를 지정하는 책임을 분리하기 위해 공연기획자를 만들자!

AppConfig를 만들면서 객체를 생성하는 역할과 실행하는 역할이 분리가 되었다!

의존관계 주입(DI, Dependecy Injection) 이라고 한다.

AppcConfig 리펙터링

  • 구성 정보에서 역할과 구현을 명확하게 분리
  • 역할이 잘 드러남
  • 중복 생성 제거

0개의 댓글