Встречается на собеседованиях • сегодня

Где будешь внедрять зависимости на примере Onion архитектуры в Python

В Onion-архитектуре зависимости внедряются через Dependency Injection (DI) на уровне интерфейсов (портов) в domain слое. Внешние слои (инфраструктура, приложение) реализуют эти интерфейсы.

Пример:

python
# Domain layer (абстракция)
class UserRepository(ABC):
    @abstractmethod
    def get_user(self, user_id: int) -> User: ...

Infrastructure layer (реализация)

class SQLUserRepository(UserRepository):
def get_user(self, user_id: int) -> User:
# Реализация работы с БД
return User(...)

Application layer (внедрение)

class UserService:
def init(self, repo: UserRepository): # DI через конструктор
self._repo = repo

text
def get_user(self, user_id: int) -> User:
    return self._repo.get_user(user_id)

Composition root (сборка зависимостей)

repo = SQLUserRepository()
service = UserService(repo)

text

Ключевые моменты:
1. Domain зависит только от абстракций (ABC/Protocol)
2. Реализации находятся во внешних слоях
3. DI происходит на границах слоев
4. Сборка зависимостей - в корне приложения (или через DI-контейнер)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы