💡A가 B에 의존한다는 의미?
A -> B
로 표시한다import java.util.*;
class B {
public void go() {
System.out.println("B의 go()함수");
}
}
class A {
public void go() {
new B().go();
// b라는 go라는 함수를 호출.
// 만일 B클래스의 go()가 gorani()함수로 변경되면 A클래스의 go()메서드의 호출도 gorani()로 변경되어야 한다.
}
}
public class main{
public static void main(String args[]) {
new A().go();
}
}
이는 2가지의 규칙을 지키는 상태를 말한다.
특징 | Dependency Injection (DI) | Dependency Inversion Principle (DIP) |
---|---|---|
정의 | 의존성 객체를 외부에서 주입받는 패턴 | 고수준 모듈이 저수준 모듈에 의존하지 않도록 함 |
목적 | 객체 간 결합도 감소, 유연성 증가 | 코드의 유연성, 확장성, 재사용성 향상 |
구현 방법 | 생성자, 세터, 메서드 등을 통한 주입 | 추상화를 통한 의존 관계 역전 |
사용 대상 | 객체나 컴포넌트 사이의 의존성 | 모듈, 패키지, 시스템 사이의 의존성 |
디자인 패턴 관계 | DI는 디자인 패턴 중 하나 | DIP는 SOLID 원칙 중 하나 |
예시 | 스프링 프레임워크의 DI 컨테이너 | 파일 시스템 접근을 인터페이스로 추상화 |