WorksheetsDragon-Driven Design
Total questions: 10
Worksheet time: 7mins
Проанализируйте что относится к обязанностям слоя приложения (Application Layer) в DDD?
Реализация бизнес-правил
Хранение данных в базе
Генерация пользовательского интерфейса
Координация работы доменных объектов
Как обычно реализуют Value Objects в C#?
Класс с публичными сеттерами всех свойств
Record с read-only свойствами или init-only сеттерами
Структура с изменяемыми полями
Статический класс
Что такое Агрегат (Aggregate)?
Группа связанных объектов, управляемых через корневой объект
Коллекция сущностей в базе данных
Паттерн для оптимизации SQL-запросов
Метод объединения нескольких микросервисов
При изменении адреса доставки в заказе генерируется DomainEvent. Через месяц добавляется интеграция с 1С, которая тоже должна реагировать на это событие. Придумайте как избежать модификации заказа при каждом новом требовании?
Добавить CRM-логику прямо в метод ChangeAddress заказа
Использовать MediatR
Создать отдельное событие для извещения 1С
Отказаться от событий и использовать поллинг
Для чего может использоваться паттерн Factory в DDD?
Для внедрения зависимостей в сервисы
Для инкапсуляции сложной логики создания составных объектов
Для преобразования DTO в доменные объекты
Для реализации Unit of Work
Где должна выполняться проверка что пользователь имеет админские права?
В конструкторе доменного объекта UserSettings
В классе контроллера при обработке команды
В интерфейсе через валидацию формы
При выполнении запроса к базе данных
Использованию какого стратегического паттерна соответствует ситуация, когда две команды (программистов) соглашаются совместно использовать часть модели и данных, синхронизируя изменения через общий код?
Published Language
Shared Kernel
Context Map
Event Sourcing
Команда разрабатывает систему для банка, объединив в одном Bounded Context сервисы для учета персональных данных клиента и кредитного скоринга. Со временем появляются конфликты: изменения в расчетах кредитного скоринга ломают логику уведомлений клиентов. Проанализируйте ситуацию и решите что предпринять.
Создать Shared Kernel для общих сущностей
Разделить модель на два Bounded Context с четкими границами
Внедрить Anti-Corruption Layer между модулями
Использовать Event Sourcing для отслеживания изменений
Ваше приложение на C# интегрируется с легаси-системой, где класс Order представлен 123 полями, включая устаревшие статусы. Ваша доменная модель использует упрощенный класс SimpleOrder. Как реализовать Anti-Corruption Layer?
Написать класс-маппер, преобразующий легаси-модель в вашу
Изменить свою модель, добавив недостающие поля
Вызвать легаси-методы напрямую из сервиса
Использовать рефлексию для автоматического копирования полей даже если структура классов не совпадает
Команда разработки называет статус заказа Completed, а бизнес-аналитики используют термин Fulfilled. Это приводит к ошибкам в требованиях. Проанализируйте ситуацию и определите, какой подход мог бы решить проблему наилучшим способом?
Игнорировать аналитиков
Использовать одинаковый термин и отразить его в коде
Написать комментарии в коде для пояснения расхождений
Переименовать статус заказа из Completed в Done
