Какой подход рекомендуется: aggregateRoot.Items.Add (…) или aggregateRoot.AddItem (…)

2

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

  • aggregateRoot.Items.Add(...)
  • aggregateRoot.AddItem(...)

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

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

  • 0
    Womp не предлагал этого, но вы. Он просто привел несколько причин, почему один вариант будет лучше, чем другой. Мне кажется - вы ищете проблемы там, где их нет.
  • 0
    Вы правы, я отредактирую свой пост, удалив предложенный вариант womp 2. О поиске проблем там, где их нет, я думаю, что это так же, как ваше мнение человек ...
Показать ещё 1 комментарий
Теги:
collections
domain-driven-design

1 ответ

2
Лучший ответ

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

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

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

  • 0
    Да, вы можете быть правы ... но я хотел получить ответ с точки зрения DDD и вездесущей формулировки. Вот почему я написал aggreagteRoot. Я отредактирую свой вопрос, чтобы быть более ясным, и я все еще буду голосовать за ваш ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню