한 객체가 다른 객체를 사용 = 의존한다
강한 결합 : 직접 생성하여 사용
약한 결합 : 이미 생성된 것을 주입 받아 사용
public class UnderstandDI {
public static void main(String[] args) {
}
public static void memberUse1() {
// 강한 결합 : 직접 생성
Member m1 = new Member();
}
public static void memberUse2(Member m) {
// 약한 결합 : 생성된 것을 주입 받음 -> 의존 주입 (Dependency Injection)
Member m2 = m;
}
}
// Member를 사용한다 -> Member의 기능에 의존한다 라는 의미
class Member {
String name;
String nickname;
public Member() {}
}
외부에서 두 객체간의 관계(의존성)를 맺어주는 것으로, 위의 예시에서 약한 결합이 DI에 해당된다.
다음 사진에서 Member 클래스의 생성자가 private 일 경우, 강한 결합 에서 에러가 발생한다.
약한 결합 이미 만들어진 것을 주입 받는 것이기 때문에 만들어질지 안만들어질지 걱정할 필요가 없기 때문에 에러가 발생하지 않는다.
따라서 DI를 사용하면 다른 클래스의 변화에 안전하고 유연하게 대처 할 수 있다.
📝 더 상세한 내용이 들어있는 글을 발견했다!