Sobes.tech
Junior — Middle
89

¿En qué consiste el propósito del principio de inversión de dependencias en el desarrollo de software?

Empresas donde se preguntó
РунитиРунити

Respuesta de la IA

sobes.tech AI

Принцип инверсии зависимостей (Dependency Inversion Principle) заключается в том, что высокоуровневые модули не должны зависеть от низкоуровневых, оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций. Это позволяет снизить связанность компонентов, повысить гибкость и облегчить тестирование.

Например, вместо того чтобы класс напрямую создавал объект конкретного класса, он зависит от интерфейса, а конкретная реализация передаётся извне (через конструктор или сеттер):

from abc import ABC, abstractmethod

class IDataFetcher(ABC):
    @abstractmethod
    def fetch(self):
        pass

class ApiFetcher(IDataFetcher):
    def fetch(self):
        return "данные из API"

class DataProcessor:
    def __init__(self, fetcher: IDataFetcher):
        self.fetcher = fetcher

    def process(self):
        data = self.fetcher.fetch()
        print(f"Обработка {data}")

fetcher = ApiFetcher()
processor = DataProcessor(fetcher)
processor.process()

Такой подход облегчает замену реализаций и тестирование с моками.