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()
Такой подход облегчает замену реализаций и тестирование с моками.