2010-08-03 4 views
3

Извините за наивный вопрос; Я все еще работаю над пониманием DDD. Предположим, у меня есть IOrderService. Является ли это тем, где у меня будет метод GetNewOrderID? Или, я думаю, в более общем плане, каков правильный способ размещения новых заказов в DDD-сценарии?Где указаны идентификаторы заказа?

ответ

0

Если я неправильно понял DDD, тогда это не наивный вопрос - вместо этого, когда неясно, где была изучена/понятна ответственность, которой недостаточно домена. Такие вещи, как:

  • Что такое формат ID заказа, какая информация идет в одну OrderID.
  • Есть ли требование сохранить что-либо в момент получения новый ИД_заказ - как кто просил его и т.д.
  • Есть ли требование , что просило, но идентификаторы неиспользованного заказа высвободить?

Одно или несколько из этих требований могут прояснить ситуацию.

+0

Спасибо! Предположим, что порядковые идентификаторы последовательно распределены, может потребоваться сохранить, когда был запрошен идентификатор заказа, и нет требования о том, чтобы запрошенные, но неиспользуемые идентификаторы заказов были освобождены. – JonathanS

+0

В этом случае и с предоставленной вами информацией я бы сказал, что да, это может быть метод, определенный интерфейсом, и реализованный в классах, которые наследуются от интерфейса. Опять же, как я вижу, DDD - это способ увидеть, что должно быть развито. Хороший дизайн и TDD затем используются, чтобы убедиться, что он реализован стабильным образом, который можно проверить. В этом случае, если вам нужен последовательный номер, тогда это должно быть централизованно (служба) обработано, чтобы он справлялся с несколькими пользователями. Тогда независимо от того, является ли OrderID фактическим столбцом идентификации в db или нет, это зависит от дизайна системы. –

0

Мне нравится слушать слова, которые используют бизнес. Если они говорят, например, о заказах по каталогам и телефонных заказах, являющихся источниками заказов, у меня может быть OrderSource или IOrderSource вместо OrderService - последнее - это разговорное слово вместо бизнес-разговоров. У меня могут быть две реализации или только один, который использует идентификатор, чтобы сказать «это от телефона», в зависимости от того, насколько отличаются процессы.

Если деловые люди говорят о получении удостоверений от их службы, то да, сделайте это. Скорее всего, они говорят о получении заказа от OrderSource, отправке его в Склад или создании OrderForm и получении ReferenceNumber. Этот ReferenceNumber может быть основным ключом, но это, вероятно, не Id.

Язык, на котором используется бизнес, может помочь вам написать программное обеспечение, которое хорошо соответствует их процессу. Сохраняет все, что легко изменить, и помогает вам определить, есть ли какой-либо аспект домена, который может использовать некоторое обучение. Шаблоны дизайна - все те же, к которым вы привыкли; Я просто не называю свой код после тех, если у бизнеса есть несколько лучших условий. См. «Вездесущий язык DDD» и удачи!

Смежные вопросы