개념
의존성(Dependency)과 의존성 주입(Dependency Injection) 간단하게 이해하기
오렌지마끼야또
2022. 9. 29. 16:36
728x90
반응형
참고 사이트
https://velog.io/@ellyheetov/Dependency-Injection
● 간단하게 의존성(Dependency) 이해하기
A클래스와 B클래스가 있다고 할 때
A 내부에서 B를 사용한다면
A가 B의 무언가를 사용(호출)한다 == A가 B에게 의존한다
ex)
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.run(); // run!!!!
}
}
class Car {
Engine engine;
Car() {
engine = new Engine();
}
void run() {
engine.run();
}
}
class Engine {
void run(){
System.out.println("run!!!!");
}
}
A 는 자동차 class, B는 엔진 class 이고 B 엔진 클래스에는 run() 함수가 있다고 했을 때
A 클래스 내부에 B클래스의 인스턴스를 만들고 B.run()을 호출한다.
A(자동차) 는 B(엔진)가 있어야만 본인의 역할을 다 할 수 있다.
쉽게 말하면 뭐가 됐든 A에서 B를 호출하는 모양이면
의존관계에 있다~ 고 보면 편하다.
이렇게 한 클래스 내부에서 인스턴스를 직접 생성하는 경우는 강한 결합이다.
● 간단하게 의존성 주입(Dependency Injection) 이해하기
public class Main {
public static void main(String[] args) {
Engine engine = new Engine();
Car car = new Car(engine); // 의존성 주입
car.run(); // run!!!!
}
}
class Car {
Engine engine;
Car(Engine e) {
this.engine = e;
}
void run() {
engine.run();
}
}
class Engine {
void run(){
System.out.println("run!!!!");
}
}
A 클래스(자동차) 안에서 B 클래스 인스턴스(엔진)를 만들지 않고
B 인스턴스 먼저 만들고
그걸 A 인스턴스 만들때 매게변수로 넣어주는 것.
그냥 필요한 것을 파라미터로 넣어주는 걸 의존성 주입이라고 생각하면 편하다.
A는 여전히 B에 의존하고 있지만 클래스 내부에서 인스턴스를 직접 생성하지 않고 의존성을 주입받음로써 약한 결합이 되었다.
728x90
반응형