Встречается на собеседованиях • сегодня
Где будешь внедрять зависимости на примере 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-контейнер)
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы