Sobes.tech
Junior — Middle
97

Puteți explica ce înseamnă principiul inversiunii dependențelor în contextul proiectării sistemelor software?

Răspuns de la AI

sobes.tech AI

Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) — это один из пяти принципов SOLID, который гласит:

  • Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Проще говоря, вместо того чтобы конкретные классы напрямую создавали или использовали другие конкретные классы, они должны работать через абстрактные интерфейсы или базовые классы. Это повышает гибкость и облегчает тестирование.

Пример на Python:

from abc import ABC, abstractmethod

class Database(ABC):
    @abstractmethod
    def save(self, data):
        pass

class MySQLDatabase(Database):
    def save(self, data):
        print(f"Сохраняем {data} в MySQL")

class DataManager:
    def __init__(self, db: Database):
        self.db = db

    def save_data(self, data):
        self.db.save(data)

# Использование
mysql_db = MySQLDatabase()
data_manager = DataManager(mysql_db)
data_manager.save_data("данные")

Здесь DataManager зависит от абстракции Database, а не от конкретной реализации MySQLDatabase. Это позволяет легко менять реализацию базы данных без изменения DataManager.