- 의존성 역전 원칙(DIP)은 프로그래밍에서 클래스를 작성하는 올바른 방법으로, 추상화에 의존하고 구체적인 클래스에 의존하지 않아야 함 💡
- DIP의 핵심은 고수준 모듈이 저수준 모듈에 의존하지 않고, 둘 다 추상화에 의존해야 한다는 것 🧩
- 이는 코드를 더 모듈화하고, 테스트 가능하게 하며, 상호 교체 가능하게 만들어 시스템을 손상시키지 않고 의존성을 교체할 수 있게 함 🔄
- 문제 있는 코드 예시에서는 User Service가 Email Notifier에 직접 결합되어 DIP를 위반함 ❌
- 해결책에서는 User Service가 Notifier 인터페이스라는 추상화에 의존하며, send 메서드를 구현하는 한 어떤 유형의 알림도 사용할 수 있음 ✅