[javascript] 의존성 주입(Dependency Injection)

의존성 주입은 주로 객체 간의 결합도를 낮추고 코드 재사용성을 높이는 데에 활용됩니다. 이 패턴을 사용하면 의존성을 하드코딩하지 않고, 외부에서 주입받아 유연하고 확장 가능한 코드를 작성할 수 있습니다.

의존성 주입은 주로 다음과 같은 방식으로 구현됩니다.

  1. 생성자 주입(Constructor Injection): 객체를 생성할 때 의존성을 전달하는 방식입니다.
class UserService {
  constructor(database) {
    this.database = database;
  }
}
  1. 설정 주입(Setter Injection): setter 메서드를 통해 의존성을 전달하는 방식입니다.
class UserService {
  setDatabase(database) {
    this.database = database;
  }
}
  1. 인터페이스 주입(Interface Injection): 서비스 프로바이더가 특정 인터페이스를 구현하도록 지시하여 의존성을 주입받는 방식입니다.

의존성 주입은 다양한 프로그래밍 언어와 프레임워크에서 지원되며, 주로 클래스 간의 결합도를 낮추고 유연한 코드를 작성하기 위해 활용됩니다.

의존성 주입에 대한 더 자세한 내용은 Martin Fowler’s article on Dependency Injection를 참고할 수 있습니다.