Junior — Middle
81
Ko je cilj principa inverzije zavisnosti u razvoju softvera?
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Принцип инверсии зависимостей (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()
Такой подход облегчает замену реализаций и тестирование с моками.