Junior — Middle
Εξηγήστε την αρχή της αντιστροφής των εξαρτήσεων και τον ρόλο της στη διαχείριση των εξαρτήσεων στις εφαρμογές.
sobes.tech AI
Απάντηση από 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.