Android(Kotlin)

의존성 주입이란?(DI)

개복치 개발자 2023. 6. 12. 02:15

의존성 주입(Dependancy Injection)에 대해서 알아보겠습니다.

 

간단하게 아래의 코드를 보면 됩니다.

 

 

UserNotificaion에서 

UserNotificaion은 EmailService에 의존합니다.

 

또한, EmailService가 PushService로 변경되면 코드를 변경해야 합니다.

 

이 문제를 해결하기 위해서 어떻게 할 수 있을까요?

 

interface MessageService라는 것을 만들어서 

 

아래와 같이 코드를 구현했습니다.

 

 

이렇게 하면 UserNotification이 EmailService에 의존하는 것이 아니라

 

MessageService를 바라보고 있고

 

EmailService / PushService도 마찬가지로 MessageService를 보고 있습니다.

 

이렇게 해서

 

의존성 역전 원칙(Dependency Inversion Principle, DIP)은 소프트웨어 개발에서 디자인 패턴 중 하나로, 고수준의 모듈이 저수준의 모듈에 의존하지 않도록 설계하는 방법을 말합니다. 더 정확히 말하면, "상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다."는 것입니다.

 

이 코드에서 UserNotificationMessageService라는 인터페이스에 의존하며, 이를 통해 Email이나 Push 서비스 등의 구체적인 구현에 대한 의존성을 없애버립니다. 이렇게 하면 UserNotificationEmailServicePushService와 같은 저수준의 구현체가 어떤 것인지 알 필요가 없게 됩니다.

 

 

 

'Android(Kotlin)' 카테고리의 다른 글

liveData vs stateFlow  (0) 2023.09.15
Sealed Class  (0) 2023.07.15
Compose surface wrapContentSize  (0) 2023.04.26
Compose clickable / padding  (0) 2023.04.26
Compose Size  (0) 2023.04.26