- 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 |