의존성 주입(Dependancy Injection)에 대해서 알아보겠습니다.
간단하게 아래의 코드를 보면 됩니다.
UserNotificaion에서
UserNotificaion은 EmailService에 의존합니다.
또한, EmailService가 PushService로 변경되면 코드를 변경해야 합니다.
이 문제를 해결하기 위해서 어떻게 할 수 있을까요?
interface MessageService라는 것을 만들어서
아래와 같이 코드를 구현했습니다.
이렇게 하면 UserNotification이 EmailService에 의존하는 것이 아니라
MessageService를 바라보고 있고
EmailService / PushService도 마찬가지로 MessageService를 보고 있습니다.
이렇게 해서
의존성 역전 원칙(Dependency Inversion Principle, DIP)은 소프트웨어 개발에서 디자인 패턴 중 하나로, 고수준의 모듈이 저수준의 모듈에 의존하지 않도록 설계하는 방법을 말합니다. 더 정확히 말하면, "상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다."는 것입니다.
이 코드에서 UserNotification은 MessageService라는 인터페이스에 의존하며, 이를 통해 Email이나 Push 서비스 등의 구체적인 구현에 대한 의존성을 없애버립니다. 이렇게 하면 UserNotification은 EmailService나 PushService와 같은 저수준의 구현체가 어떤 것인지 알 필요가 없게 됩니다.
'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 |