Dependency Injection Pattern
- 의존성 주입 패턴
- 컴포넌트의 종속성들을 외부 개체의 의해 입력으로 주입하는 것.
- 외부 개체는 일반적으로 중앙 클라이언트, 전역 컨테이너 등이 해당한다.
- 종속성의 외부 개체의 의해 입력 받기 때문에, 종속 모듈이 하드코딩 되어있는 형태에 비하여 결합성(Coupling)이 약화된다.
- 따라서, 하드코딩되어 있는 종속성이 없기 때문에 어떠한 종속 모듈을 받아들여서든 활용이 가능해지며, 재사용성이 올라가게 된다.
- 이러한 특징 덕분에 Mociking 을 모듈을 시스템의 나머지 상태와 분리하여 테스트할 수 있게 된다.
Example
const level = require("level");
module.exports = (dbName) => {
return level(dbName);
};
const dbFactory = require("./db");
const db = dbFactory("./levdb");
const routerFactory = require("./routes");
const routers = routerFactory(db);
- di를 위해 이전에 정리한
factory pattern
을 사용한다. - 모듈을 팩토리화 시킨 후, 팩토리 인자에 종속성을 부여해주는 방식으로 구현이가능하다.