Является ли значение sort допустимым свойством домена? - PullRequest
0 голосов
/ 22 сентября 2019

Фон

Я создаю приложение, отображающее вертикальный список элементов (представьте себе приложение для просмотра файлов).Типом элемента может быть папка, и в этом случае папка может иметь любое количество дочерних элементов / папок, что позволяет пользователю создавать / перемещаться по иерархии, как в файловой системе.Вместо элементов, упорядоченных по алфавиту (и т. Д.), Пользователь может вручную перетаскивать элементы, чтобы сортировать их по своему усмотрению.Таким образом, у каждого элемента есть целочисленный тип sort / position, который отслеживает положение элемента относительно других элементов в текущей папке.По крайней мере, модели представлений в настоящее время.

Вопрос

Принадлежит ли свойство sort / position элемента как свойство в доменных объектах для элементов?

Значения сортировки не имеют значения для отдельного элемента.Странная концепция здесь - рекурсивная / иерархическая природа элементов, которые являются папками.Элементы типа папок могут быть ответственны за то, чтобы действительные значения сортировки непосредственных потомков были действительными (последовательные / без пробелов / без перекрытий), и за внесение изменений в порядок сортировки этих потомков.

Но правильно ли это?Порядок сортировки выглядит как проблема, связанная с отображением.Должна ли вместо этого существовать служба, которая принимает объекты домена без сортировки и применяет свойство сортировки / позиции к этим элементам, когда они преобразуются для просмотра моделей перед отображением?

1 Ответ

1 голос
/ 23 сентября 2019

Агрегат - это граница согласованности.Все бизнес-правила должны быть сохранены в пределах этой согласованной границы.Помещение SortOrder в ваш Агрегат элементов будет означать, что вы не можете гарантировать, что указанные вами правила соблюдаются, но если вы ослабите свои правила, тогда вы можете сойти с рук, поместив SortOrder здесь.В частности, если вы удалите ограничение, что ваш SortOrder должен быть строго последовательным, то вы можете жить с пробелами.

Если вы поместите SortOrder в агрегат папок, вы сможете сохранить предложенные вами правила, но там тоже есть какая-то цена?Что делать, если элемент удален или перемещен в другую папку?Как родительская папка получает уведомление?Как это реагирует?Вы удаляете товар и делаете повторный заказ?

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

...