IoC/DI - 제어의 역전/의존성 주입

프로그래밍에서 의존성이란?

의사 코드

운전자가 자동차를 생성한다.

자동차는 내부적으로 타이어를 생산한다.

자바로 표현

new Car();
Car 객체 생성자에서 new Tire();

의존성은 new이다. new를 실행하는 Car와 Tire 사이에서 Car가 Tire에 의존한다.

결론적으로 전체가 부분에 의존한다고 표현할 수 있다. 즉, 의존 관계는 new로 표현되는 것이다.

또한, 의존성이란, 외부에서 라는 뜻을 내재하고 있다.

1. 생성자를 통한 의존성 주입

public class Driver {
		public static void main(String[] args) {
			Tire tire = new KoreaTire():
			//Tire tire = new AmericaTire();
			Car car = new Car(tire);
			System.out.println(car.getTireBrand());
}
}

이러한 방법을 통해서 얻는 이점은 tire가 미국산이든 국내산이든 Tire 인터페이스를 구현한 구현체라면 정상적으로 작동하게 된다. 확장성이 좋아지며, Car클래스의 수정이 불필요해진다.

즉, 코드가 한결 깔끔해진 것을 알 수 있다.

2. 속성을 통한 의존성 주입

public class Driver {
		public static void main(String[] args) {
				Tire tire = new KoreaTire();
				Car car = new Car();
				car.setTire(tire);
				System.out.println(car.getTireBrand());
		}
}