자바스크립트 클래스를 사용하여 어떻게 의존성 주입을 구현할 수 있나요?

의존성 주입은 객체 간의 의존성을 느슨하게 결합하여 코드의 유연성과 재사용성을 향상시키는 디자인 패턴입니다. 이는 강한 의존성을 가진 객체를 생성하는 대신, 의존성을 외부로부터 주입받아 활용하는 방식입니다. 이를 통해 유닛 테스트가 용이해지고 코드의 가독성과 유지보수성을 증가시킬 수 있습니다.

먼저, 의존성 주입을 구현할 자바스크립트 클래스를 작성해보겠습니다. 아래는 예시입니다:

class Car{
  // 의존성 주입을 통해 Engine 객체를 주입받음
  constructor(engine){
    this.engine = engine;
  }
  
  // Engine 객체의 메소드 사용
  start(){
    this.engine.start();
  }
}

class Engine{
  start(){
    console.log("Engine started");
  }
}

위의 코드에서 Car 클래스는 Engine 객체를 주입받아 사용합니다. Car 클래스의 생성자에서 engine 매개변수를 통해 Engine 객체를 주입받습니다. 이렇게 주입받은 Engine 객체를 활용하여 start 메소드를 실행할 수 있습니다.

이제 의존성 주입을 사용하여 Car 객체를 생성해보겠습니다:

const engine = new Engine();
const car = new Car(engine);

car.start(); // "Engine started"를 출력

위의 예제에서는 Engine 객체를 먼저 생성하고, 이를 Car 객체를 생성할 때 주입해주었습니다. 따라서 car.start()를 호출하면 “Engine started”가 출력됩니다.

의존성 주입을 통해 객체 간의 결합도를 낮추고 유연성과 재사용성을 향상시킬 수 있습니다. 자바스크립트 클래스를 사용하여 의존성 주입을 구현하면 코드를 더 효율적으로 관리할 수 있습니다.

참고 자료