wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Dragon-Driven Design

Total questions: 10

Worksheet time: 7mins

Name
Class
Date
1.

Проанализируйте что относится к обязанностям слоя приложения (Application Layer) в DDD?

a)

Реализация бизнес-правил

b)

Хранение данных в базе

c)

Генерация пользовательского интерфейса

d)

Координация работы доменных объектов

2.

Как обычно реализуют Value Objects в C#?

a)

Класс с публичными сеттерами всех свойств

b)

Record с read-only свойствами или init-only сеттерами

c)

Структура с изменяемыми полями

d)

Статический класс

3.

Что такое Агрегат (Aggregate)?

a)

Группа связанных объектов, управляемых через корневой объект

b)

Коллекция сущностей в базе данных

c)

Паттерн для оптимизации SQL-запросов

d)

Метод объединения нескольких микросервисов

4.

При изменении адреса доставки в заказе генерируется DomainEvent. Через месяц добавляется интеграция с 1С, которая тоже должна реагировать на это событие. Придумайте как избежать модификации заказа при каждом новом требовании?

a)

Добавить CRM-логику прямо в метод ChangeAddress заказа

b)

Использовать MediatR

c)

Создать отдельное событие для извещения 1С

d)

Отказаться от событий и использовать поллинг

5.

Для чего может использоваться паттерн Factory в DDD?

a)

Для внедрения зависимостей в сервисы

b)

Для инкапсуляции сложной логики создания составных объектов

c)

Для преобразования DTO в доменные объекты

d)

Для реализации Unit of Work

6.

Где должна выполняться проверка что пользователь имеет админские права?

a)

В конструкторе доменного объекта UserSettings

b)

В классе контроллера при обработке команды

c)

В интерфейсе через валидацию формы

d)

При выполнении запроса к базе данных

7.

Использованию какого стратегического паттерна соответствует ситуация, когда две команды (программистов) соглашаются совместно использовать часть модели и данных, синхронизируя изменения через общий код?

a)

Published Language

b)

Shared Kernel

c)

Context Map

d)

Event Sourcing

8.

Команда разрабатывает систему для банка, объединив в одном Bounded Context сервисы для учета персональных данных клиента и кредитного скоринга. Со временем появляются конфликты: изменения в расчетах кредитного скоринга ломают логику уведомлений клиентов. Проанализируйте ситуацию и решите что предпринять.

a)

Создать Shared Kernel для общих сущностей

b)

Разделить модель на два Bounded Context с четкими границами

c)

Внедрить Anti-Corruption Layer между модулями

d)

Использовать Event Sourcing для отслеживания изменений

9.

Ваше приложение на C# интегрируется с легаси-системой, где класс Order представлен 123 полями, включая устаревшие статусы. Ваша доменная модель использует упрощенный класс SimpleOrder. Как реализовать Anti-Corruption Layer?

a)

Написать класс-маппер, преобразующий легаси-модель в вашу

b)

Изменить свою модель, добавив недостающие поля

c)

Вызвать легаси-методы напрямую из сервиса

d)

Использовать рефлексию для автоматического копирования полей даже если структура классов не совпадает

10.

Команда разработки называет статус заказа Completed, а бизнес-аналитики используют термин Fulfilled. Это приводит к ошибкам в требованиях. Проанализируйте ситуацию и определите, какой подход мог бы решить проблему наилучшим способом?

a)

Игнорировать аналитиков

b)

Использовать одинаковый термин и отразить его в коде

c)

Написать комментарии в коде для пояснения расхождений

d)

Переименовать статус заказа из Completed в Done