Какой подход рекомендуется: aggregateRoot.Items.Add (...) или aggregateRoot.AddItem (...) - PullRequest
2 голосов
/ 06 августа 2009

Какой подход рекомендуется в мире DDD ... и почему?

  1. aggregateRoot.Items.Add(...)
  2. aggregateRoot.AddItem(...)

Я думаю, что первый вариант лучше, так как он больше связан с вездесущим языком .

Должен ли я предоставлять доступную только для чтения (IEnumerable) коллекцию и некоторые AddItem () / RemoveItem () / etc в aggregateRoot (вариант 1) или предоставлять строго типизированную коллекцию (мне не нравится выставлять IList или даже хуже , List ), который поддерживает добавление / удаление / etc (опция 2).

1 Ответ

2 голосов
/ 06 августа 2009

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

Если вы инкапсулируете коллекцию, к которой пользователи не хотят иметь прямой доступ, вы можете использовать AddItem () в качестве достаточно самодоступного метода, чтобы помочь пользователям добавить элемент в нее.

Если ваш объект предоставляет коллекцию как есть, то Items.Add () соответствует поведению коллекции и, вероятно, будет лучшим выбором.

...