포시코딩

2월9일 - IoC와 DI - DIP 관련 작성중 본문

TIL

2월9일 - IoC와 DI - DIP 관련 작성중

포시 2023. 2. 9. 17:07
728x90

IoC 

(Inversion of Control)

제어 역전. 이라는 뜻

 

class AppController {
  appService;
  
  constructor() {
    this.appService = new AppService();
  }
}

기존에는 위와 같이 사용하고 싶은 객체가 있으면 생성부터 소멸까지 직접 관리해야 됐었다.

이렇게 직접 생성하면 의존하는 서비스가 변경될 때 개발자도 그에 맞춰 코드를 수정해줘야 하는 번거로움이 있었다.

 

하지만 IoC는 개발자가 사용하고 싶은 객체를 직접 생성하는 것이 아니라 

객체의 생명주기 관리 자체를 외부에 위임한다. ex) Nest.js IoC 컨테이너

즉, 객체의 관리를 컨테이너에 맡겨서 제어권이 넘어갔기 때문에 IoC(제어 역전)이라고 하는 것이다.

 

IoC는 모듈 간 결합도를 낮추기 때문에 하나의 모듈이 변경되어도 다른 모듈들에는 영향을 최소화되어

웹 어플리케이션을 지속 가능하고 확장성 있게 해준다.

 

DI

DI는 이러한 IoC를 수행하는 방법의 하나이며

Nest.js에서는 생성자를 통한 DI를 가장 기본적인 IoC 테크닉으로 생각하고 있다.

constructor(private readonly appService: AppService) {}

단 한줄로 끝나는 모습

 

SOLID 원칙의 DIP(의존 역전 원칙)

작성중

728x90