본문 바로가기

CS

[CS] DIP / IoC / DI

  • Dependency Inversion Principle: 의존의 역전 원칙. SOLID 원칙 중 하나로, 구체적인 것이 추상화에 의존하는 것을 의미한다. 인터페이스에 의존하는 경우, 이를 구현한 클래스 상에 변동이 발생하더라도 구체적 객체와는 결합도가 낮아 변화가 전파되지 않는다.
    • 추상에 의존 부분에 주목!
  • Inversion of Control: 제어 수준을 역전한다는 의미로, 사용자가 객체의 생명 주기나 코드의 흐름을 직접 관리하는 대신 프레임워크에 제어권을 넘기는 패턴. 프레임워크에 정의된 생명 주기와 동작 방식에 따라 적합한 함수를 프레임워크 수준에서 실행한다. ex) Get / Post 데코레이터를 적용한 controller 메서드
    • 제어 권한이 프로그래머가 아닌 프레임워크에게 있다는 점에 주목! 프로그래머는 적절한 함수를 구현할 뿐, 동작은 프레임워크에 의해 제어된다.
  • Dependency Injection: 필요로 하는 객체를 직접 생성하는 대신 외부로부터 주입 받는 방식. 일반적으로 IoC를 채택하는 프레임워크는 각 클래스를 관리하며 DI를 수행해준다.
    • nestjs의 경우 DI Container을 통해 의존성을 관리하며, 의존 관계에 맞는 적절한 위치에 주입한다.
    • 생성자 기반
    • 프로퍼티 기반 (또는 setter 기반)
    • 객체를 직접 생성하는 것이 아니라, 외부에서 생성한 후 주입한다.

'CS' 카테고리의 다른 글

AOP  (0) 2024.03.13
객체 지향 프로그래밍의 배경  (1) 2024.02.19
[CS] 객체 지향  (0) 2023.10.18
[batch] cron 표현식  (0) 2023.08.23
[네트워크] HOL(Head Of Line) blocking  (0) 2023.08.03