하나의 객체가 다른 객체의 의존성을 제공하는 기술. 외부에서 의존 객체를 생성하여 넘겨주는 기법을 의미한다.
일반적인 객체 생성은 클래스 안에서 사용할 객체를 생성하지만, DI는 외부에서 객체를 주입 받는 방식이다.
class A {
private Test test;
fun Foo() { this.test = new Test() }
fun Boo() { this.test.do() }
}
클래스 A
의 Boo()
함수를 호출하기 위해서는 Test 클래스가 필수적이다.
→ A는 Test 클래스에 의존성을 가진다.
의존성이 생겨나면 코드의 재활용성이 떨어지고,
결합도가 높아져 하나의 클래스를 수정하였을 때의 영향력이 커진다.
<aside> 💡 의존성은 함수에 필요한 클래스 또는 참조변수에 의존하는 것
</aside>