TIL - 2024.05.03 금요일

· 성취/개선/학습한 내용 🏆

 오늘은 의존성 주입과 의존성 역전 원칙에 대해서 학습을 했다. 우선 의존성이란 서로 다른 객체 사이에 의존 관계가 있다는 것을 말한다. 즉 다시 말하면, 의존하는 객체가 수정되면 다른 객체도 영향을 받는다는 것이다. 만일 의존성을 가지는 코드가 많아지면 어떻게 될까? 답은 재활용성이 떨어지게 되고, 코드를 수정할 때마다 매번 의존성을 가지는 객체들을 같이 수정해주어야 한다. 이런 의존성을 해결하기 위한 개념이 바로 의존성 주입이다. 

 그렇다면 의존성 주입을 하게 된다면 뭐가 좋을까? 위에서 언급한 코드의 재활용성을 높일 수 있고, 객체 간의 의존성을 줄이거나 없앨 수 있다. 또 Unit Test가 용이해지는 면도 있다. 그런데 의존성을 주입하는 것만으로는 의존성 주입이라고 부르지 않는데 이때 알고 넘어가야 할 개념이 있다. 바로 의존 관계 역전 법칙(DIP)이다. 이 법칙은 SOLID 원칙 중 하나로 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있는 구조를 말한다. 이 법칙은 두 가지 특징이 있는데, 첫째로 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다라는 것이다. 두 번째로는 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다는 점이다.

  • DIP
    • DI
    • 상위모듈, 하위모듈
    • interface, 구현체

· 어려웠던 내용 😵😵‍💫

  • 사실 SOLID 원칙에 해당하는 이 내용 자체가 평소에 많이 생각해보지 않은 것이라 좀 생소했다. 하지만 지금까지 코드를 짜면서 코드를 변경할 때마다 연쇄적으로 바꿔줘야하는 부분이 있어서 불편했었다. 아마 이런 부분 때문에 선구자들이 정해 놓은 규칙인가 싶다.  

 

 

'# TIL (Today I Learned)' 카테고리의 다른 글

TIL - 2024.05.09 목요일  (0) 2024.05.09
TIL - 2024.05.08 수요일  (0) 2024.05.08
TIL - 2024.04.30 화요일  (0) 2024.04.30
TIL - 2024.04.29 월요일  (0) 2024.04.29
TIL - 2024.04.26 금요일  (0) 2024.04.26