Junior — Middle
Leg het principe van afhankelijkheidsomkering uit en de rol ervan in het beheer van afhankelijkheden in applicaties.
sobes.tech AI
Antwoord van AI
Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) заключается в том, что модули верхнего уровня не должны зависеть от модулей нижнего уровня напрямую. Вместо этого и те, и другие должны зависеть от абстракций (например, интерфейсов).
Это помогает управлять зависимостями в приложениях, делая код более гибким и тестируемым. Вместо жёсткой привязки к конкретным реализациям, компоненты взаимодействуют через абстракции, что облегчает замену и расширение функционала.
Пример на Python:
from abc import ABC, abstractmethod
class Database(ABC):
@abstractmethod
def save(self, data):
pass
class MySQLDatabase(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)
# Использование
mysql_db = MySQLDatabase()
service = UserService(mysql_db)
service.create_user({'name': 'Alice'})
Здесь UserService зависит от абстракции Database, а не от конкретной реализации MySQLDatabase.