본문 바로가기

안드로이드/DI

[안드로이드] Dependency Injection (DI)

DI는 Dependency Injection의 약자로 의존성 주입이라고 한다.

의존성이란?

의존성은 하나의 클래스에서 다른 객체를 참조하는 것을 말한다.

 

다음 예시를 보면

class A {
    val B_Class = B()
}

class B {
    ...
}

 

클래스 A가 B를 참조하고 있다.

 

이때 우리는 클래스 A가 B를 의존하고 있다고 한다.

 

DI (의존성 주입)

의존성이 높으면 유지보수 및 테스트가 어려워진다.

따라서 클래스 내부에서 객체를 참조하는 것이 아닌 외부에서 참조시켜주는 것을 의존성 주입, DI라고 한다.

 

방법은 다음과 같다.

A, B 클래스 외의 새로운 매개체를 하나 생성한 뒤, 그 매개체를 통해서 의존성을 관리해주는 것이다.

 

 

이 매개체를 Inversion Of Control ( IOC ) 이라고 한다.

IOC에서는 의존성을 관리해주고, 인스턴스를 생성하여 주입시켜주며, 메모리를 해제를 수행한다.

 

안드로이드에서 사용하는 대표적인 DI 프레임워크는 Koin과 Hilt 등이 있다.

DI의 장점

DI를 사용하게되면 다음과 같은 장점이 있다.

  • 의존성 감소 : IOC를 통한 의존성 관리로 객체간의 의존성이 감소한다.
    • 유지보수 용이
    • 재사용성 향상
    • 변화에 유연하게 대처 가능
  • 코드양 감소
  • 테스트 용이

 

 

'안드로이드 > DI' 카테고리의 다른 글

[안드로이드] Hilt  (0) 2024.04.04