공부/Java

Dependency

JYJ 2022. 12. 20. 16:08

Dependency 의존

 

-어떤 클래스 A가 다른 클래스(또는 인터페이스) B를 이용할 때 A가 B에 의존한다고 함

- A는 B없이 작동할 수 없고 B를 재사용하지 않으면 A또한 재사용 할 수 없음

- 여기에서 클래스 A는 Dependant라고 하고 클래스 B는 Dependency라고 함

- Dependant는 자신의 Dependency들에게 의존한다. 서로를 이용하는 두 클래스는 각각 coupled라 함

- 클래스 사이의 coupling은 느슨 할 수도 타이트할 수도 있음, tightness의 정도는 연속적임, 의존선 또한 강/약함으로 나타낼수 있음, 타이트한 커플링은 강한 의존성을 만들고, 느슨한 커플링은 약한 의존성을 만들거나 만들지 않을 수 있음

- 의존성, 커플링은 방향이 존재함 (A가 B에 의존한다고 해서 B 또한 A에게 의존적인 것은 아님)

의존 대상 B가 변하면 그것이 A에 영향을 미침..

 

높은 의존성이 좋지 않은 이유는 높은 의존성은 모듈의 재사용을 감소, 독립적이지 않으므로 다른 곳에 사용하기 어려움)

 

Dependency Injection (의존성 주입) == DI

의존 관계를 외부에서 결정하고 주입하는 것

클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스만 의존하고 있어야 함

런타임 시점의 의존관계는 컴테이너나 팩토리 같은 제 3의 존재가 결정함.

의존 관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공(주입)해 줌으로 써 만들어짐

객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것

DI장점 (의존 관계를 분리하여, 주입을 받는 방법의 코드 구현의 장점)

의존성이 줄어듬

재사용성이 높은 코드가 됨

테스트하기 좋은 코드가 됨

가독성이 높아짐 

 

'공부 > Java' 카테고리의 다른 글

빌드  (0) 2022.12.20
Gradle란?  (2) 2022.12.20