의존성 주입의 주요 장점은 두 객체 간 의존 관계를 줄이는 느슨한 결합도(loose coupling)입니다. 객체 간 의존 관계를 유연하게 처리하려면 인터페이스를 활용해야 합니다. 인터페이스를 활용하면 의존 객체를 바꾸지 않고 인터페이스를 구현한 클래스(이하 인터페이스 구현체라고 함)로 변경하여 사용할 수 있습니다.
Note ≣ | 느슨한 결합도란?
두 객체 간 의존 관계를 줄이는 것(느슨하게 만드는 것)입니다.
다음은 의존 관계의 결합도가 높은 예입니다.
public class A {
public A() {
b = new B();
}
}
B 클래스가 변경되면 A 클래스에 많은 영향을 미치기 때문에 서로 의존 관계에 있으며, 두 클래스는 결합도가 매우 높다고 할 수 있습니다. 이런 결합도를 낮추려면 두 클래스의 의존 관계를 끊어야 하는데, 이때 다음과 같이 interface(abstract도 방법)를 사용해서 의존 관계를 제한하여 결합도를 느슨하게 합니다.
public interface B {
}
public class A {
public A() {
b = new B();
}
}