Что такое dependency inversion principle
Python
Senior
Без компании
Что такое dependency inversion principle
Ответы
Принцип инверсии зависимостей (DIP) — один из SOLID-принципов, который гласит:
- **Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.**
- **Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.**
**Преимущества:**
- Уменьшает связанность кода.
- Упрощает тестирование и замену реализаций.
- Делает систему гибче и расширяемее.
**Пример:**
```
from abc import ABC, abstractmethod
class Database(ABC): # Абстракция
@abstractmethod
def save(self, data):
pass
class MySQL(Database): # Детали
def save(self, data):
print(f"Saving {data} to MySQL")
class UserService: # Модуль верхнего уровня
def __init__(self, db: Database): # Зависит от абстракции
self.db = db
def create_user(self, user_data):
self.db.save(user_data)
# Использование
service = UserService(MySQL())
service.create_user({"name": "Alice"})
```
Здесь `UserService` зависит от абстракции `Database`, а не от конкретной СУБД.