Продолжайте в том же проекте Ddd.Taxi.
Изучите пару классов TaxiOrder
и TaxiApi
— это модель предметной области по заказу такси.
TaxiOrder — типичная анемичная модель. Вся логика, связанная с этим классом находится в TaxiApi.
Переработайте класс TaxiOrder согласно принципам DDD. А именно:
- Сгруппируйте связанные свойства TaxiOrder во вспомогательные классы: PersonName, Address, Driver. Для этого можно как использовать уже готовые классы из пространства имён Domain, так и создавать собственные классы. При проверке этой задачи ValueType из предыдущей задачи будет доступен — используйте его!
- Перенесите всю логику из методов TaxiApi в методы TaxiOrder. В TaxiApi должен остаться только тестовый код и вызовы соответствующих методов TaxiOrder.
- Добавьте проверки на валидность действий — кидайте InvalidOperationException, если действие в данном состоянии заказа невалидно.
- Замените все поля на свойства и закройте у свойств сеттеры. Впрочем, можно закрыть и сами свойства.
Проверяйте результат запуском тестов.
При переработке кода, публичный интерфейс TaxiApi нужно сохранить, чтобы система тестирования смогла проверить результат вашего рефакторинга. Однако, в реальном проекте переработка TaxiOrder наверняка повлекла бы за собой переработку и TaxiApi.
1 2 3 4 5 6 7 8 |
using System; using System.Globalization; using System.Collections.Generic; using System.Linq; using Ddd.Infrastructure; namespace Ddd.Taxi.Domain { |
Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂