의존 관계의 종류
- 컴파일 타입 : 코드의 컴파일 시점 코드가 실행되기 전부터 의존관계 주입이 완료되어, 컴파일 단계에서 검사한다.
- 런타임 : 프로그램 실행 시점 코드가 실행되며 의존관계가 동적으로 주입되는 방식으로, 실행 될 떄 의존 관계가 주입되는 방식 ex) new method(new ArrayList<>()) 처럼 실행하며 인스턴스가 만들어질 때 의존관계가 주입된다.
장점
컴파일 타임에 추상적인 것에 의존하고, 런타임에 관계 주입을 통해 구현체를 주입한다면 많은 이점을 얻을 수 있다.
전략 패턴(Strategy Pattern) 알고리즘을 클라이언트 코드의 변경 없이 쉽게 교체할 수 있다. List 가 전략을 정의하는 인터페이스, 각각의 구현체인 ArrayList 와 LinkedList 가 전략의 구체적인 구현 → 전략을 클라이언트 코드의 변경 없이 교체할 수 있다.