Извините за наивный вопрос; Я все еще работаю над пониманием DDD. Предположим, у меня есть IOrderService
. Является ли это тем, где у меня будет метод GetNewOrderID
? Или, я думаю, в более общем плане, каков правильный способ размещения новых заказов в DDD-сценарии?Где указаны идентификаторы заказа?
ответ
Если я неправильно понял DDD, тогда это не наивный вопрос - вместо этого, когда неясно, где была изучена/понятна ответственность, которой недостаточно домена. Такие вещи, как:
- Что такое формат ID заказа, какая информация идет в одну OrderID.
- Есть ли требование сохранить что-либо в момент получения новый ИД_заказ - как кто просил его и т.д.
- Есть ли требование , что просило, но идентификаторы неиспользованного заказа высвободить?
Одно или несколько из этих требований могут прояснить ситуацию.
Мне нравится слушать слова, которые используют бизнес. Если они говорят, например, о заказах по каталогам и телефонных заказах, являющихся источниками заказов, у меня может быть OrderSource или IOrderSource вместо OrderService - последнее - это разговорное слово вместо бизнес-разговоров. У меня могут быть две реализации или только один, который использует идентификатор, чтобы сказать «это от телефона», в зависимости от того, насколько отличаются процессы.
Если деловые люди говорят о получении удостоверений от их службы, то да, сделайте это. Скорее всего, они говорят о получении заказа от OrderSource, отправке его в Склад или создании OrderForm и получении ReferenceNumber. Этот ReferenceNumber может быть основным ключом, но это, вероятно, не Id.
Язык, на котором используется бизнес, может помочь вам написать программное обеспечение, которое хорошо соответствует их процессу. Сохраняет все, что легко изменить, и помогает вам определить, есть ли какой-либо аспект домена, который может использовать некоторое обучение. Шаблоны дизайна - все те же, к которым вы привыкли; Я просто не называю свой код после тех, если у бизнеса есть несколько лучших условий. См. «Вездесущий язык DDD» и удачи!
- 1. Где указаны идентификаторы, такие как NSControlKeyMask
- 2. Где указаны имена типов?
- 3. Где указаны коды ошибок?
- 4. SQL получить все идентификаторы, где субиндикаторы точно указаны без получения других идентификаторов, где некоторые под-идентификаторы отсутствуют
- 5. Где указаны document-gyp [параметры]?
- 6. где указаны значения grails libs
- 7. где указаны функции API Windows?
- 8. Где указаны ссылки и указатели?
- 9. Где указаны стандартные функции оператора?
- 10. Где указаны внутренние страницы ошибок
- 11. Где указаны константы ошибок Windows?
- 12. Захватите все документы, идентификаторы которых не указаны в отдельной таблице
- 13. Где указаны английские правила плюрализации для ActiveSupport?
- 14. где указаны типы сообщений шины gstreamer?
- 15. C++ где указаны флаги для связывания библиотек?
- 16. Где должны быть указаны параметры по умолчанию?
- 17. Где указаны данные пользователя, хранящиеся на MacOS
- 18. где указаны атрибуты элемента стиля андроида?
- 19. Найти файлы, где указаны префикс и суффикс
- 20. Где указаны значения возврата кода BCrypt NTSTATUS?
- 21. Как отсортировать массив объектов, где указаны даты
- 22. Где указаны эти свойства муравьев? (FlexBuilder/Eclipse)
- 23. Где указаны символы yy_switch_to_buffer и yy_create_buffer?
- 24. Где указаны поля для файла unicode.org «UnicodeData.txt»?
- 25. Где указаны параметры MSG_ для рубиновых сокетов?
- 26. где должны быть указаны свойства c3p0?
- 27. Роль Azure, где указаны конечные точки ввода?
- 28. Где указаны параметры для TIdCompressorZLib.CompressStream метода Indy?
- 29. где указаны определения объектов cout, cin?
- 30. Использование firebug, где указаны js-ошибки?
Спасибо! Предположим, что порядковые идентификаторы последовательно распределены, может потребоваться сохранить, когда был запрошен идентификатор заказа, и нет требования о том, чтобы запрошенные, но неиспользуемые идентификаторы заказов были освобождены. – JonathanS
В этом случае и с предоставленной вами информацией я бы сказал, что да, это может быть метод, определенный интерфейсом, и реализованный в классах, которые наследуются от интерфейса. Опять же, как я вижу, DDD - это способ увидеть, что должно быть развито. Хороший дизайн и TDD затем используются, чтобы убедиться, что он реализован стабильным образом, который можно проверить. В этом случае, если вам нужен последовательный номер, тогда это должно быть централизованно (служба) обработано, чтобы он справлялся с несколькими пользователями. Тогда независимо от того, является ли OrderID фактическим столбцом идентификации в db или нет, это зависит от дизайна системы. –