Dependency Injection(DI)은 객체지향 프로그래밍에서 객체간 의존성을 관리하는 기술 중 하나입니다. 객체간 의존성은 객체가 다른 객체를 사용하는 경우에 발생하는데, 예를 들어 A 객체가 B 객체를 사용한다면 A 객체는 B 객체에 의존합니다.
DI는 이러한 객체간 의존성을 외부에서 관리하도록 하는 방식으로, 객체를 생성하고 조립하는 방법을 정의하여 의존성이 있는 객체 간의 결합도를 줄입니다. 이를 통해 코드의 유지보수성과 확장성이 향상되는 장점이 있습니다.
DI(Dependency Injection)는 클래스들 사이의 높은 결합도(강한 의존성)를 줄여 코드의 유연성과 재사용성을 향상시키는 디자인 패턴이다. 기본적인 아이디어는 개체의 생성과 관리를 개체 그 자체에서 분리시키는 것이다. 다시 말하면 클래스 안에서 의존성을 직접 만드는 대신, 생성자나 Setter와 같은 메소드를 통해 전달 받는 것이다. by 승범(신)
모듈성 증가
: DI는 의존성을 외부에서 주입하여, 모듈 간의 결합도를 낮춥니다. 이를 통해 각 모듈을 독립적으로 개발하고 테스트할 수 있으며, 재사용성도 높아집니다.
테스트 용이성
: DI는 의존성을 주입하여 객체를 생성하기 때문에, 의존하는 객체를 모의(mock) 객체로 대체하여 테스트할 수 있습니다. 이를 통해 테스트의 견고성을 높일 수 있습니다.
코드 가독성 향상
: DI는 의존성을 외부에서 정의하여 코드의 가독성을 향상시킵니다. 의존성이 명시적으로 주입되기 때문에 코드를 이해하기 쉬워집니다.
유연성 증가
: DI는 객체를 생성하고 조립하는 방법을 외부에서 정의하기 때문에, 객체 생성 방식을 유연하게 변경할 수 있습니다. 이를 통해 객체 생성 방식이 변경되어도 다른 객체에 영향을 미치지 않습니다.