Sobes.tech
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.