[면접 질문] Dependency Injection

TraceofLight·2023년 7월 6일
0

InterviewStudy

목록 보기
10/11
post-thumbnail

의존성 주입

의존성: 객체가 다른 객체를 사용하고 있는 관계
→ 의존성 주입: 관계를 설정해주는 것

의존성 주입이 필요한 이유?

public class Product {

	private Apple apple;
    
    public Product() {
    	this.apple = new Apple();
	}

}

이렇게 예시를 작성해놓고 볼 때 Product라는 클래스가 Apple 생성자를 사용하는 경우 따로 주입 받지 않고 그대로 사용하고 있다.
Product를 사용할 경우, Apple이 그대로 딸려나오는 종속적인 관계로 이해할 수 있다. 이렇게 되면 객체끼리의 연결이 아닌 클래스 간의 관계라고 볼 수 있다.

또한 내가 Orange 라는 클래스를 추가적으로 사용하고 싶다면 Product 클래스 생성자에 변화를 직접 줘야 하는 상황이고 이는 유연성이 떨어진다고 볼 수 있다.

결론적으로 의존성 주입이 필요한 이유를 짚어보자면

클래스 간의 강한 결합력 + 코드의 유연성이 떨어짐

이런 문제를 의존성 주입으로 해결할 수 있기 때문에 필요하다고 할 수 있겠다!

해결책의 적용

public interface Fruit {

}

public class Apple implements Fruit {

}

public class Product {

	private Fruit fruit;
    
    public Product(Fruit fruit) {
    	this.fruit = fruit;
    }
    
}

각각의 클래스가 독립성을 보장 받고 있는 것을 확인할 수 있겠다.

  1. 새로운 Fruit 추가해도 Product가 변하지 않음
  2. 클래스 관계 대신 객체 간의 관계가 형성됨
profile
24시간은 부족한 게 맞다

0개의 댓글