Несколько связанных значений, используя объект значения или нет?

Я строю систему рейтинга, в которой объект оценивается по разным параметрам, по шкале от 1 до 5.

Это для стороннего проекта, поэтому я пытаюсь использовать этот проект для обучения другим навыкам, связанным с кодом, особенно TDD и, возможно, DDD, но я немного растерялся из-за того, как это будет иметь смысл для архитектуры.

Базовая структура состоит из пользователь (нам всем нравятся эти парни), и у меня есть Вещь (вещь, которую мы оцениваем). я пользователь может оценить несколько Вещьс и Вещь можно оценить по нескольким пользовательс, поэтому мы и ThingRating работать с отношением многих ко многим пользователь а также Вещь.

ThingRating должен состоять из оценок 4 различных параметров, и это 4 параметра, я не совсем уверен, где поставить.

Простой вариант, кажется, добавить их как 4 свойства на ThingRating объект, param1-4. Так как рейтинг — это значение в диапазоне от 1 до 5, это нормально, но мне придется проверить ввод в ThingRating поскольку я не могу напечатать подсказку типа int (или float, в зависимости от степени детализации, которую я выбрал), поэтому я рассматриваю возможность использования объекта значения для рейтинга.

Это означает, что мне нужен либо объект значения, содержащий оценку 1 параметра, либо объект значения, состоящий из всех 4 параметров. Наличие объекта, содержащего все 4 параметра, кажется, что это было бы в основном зеркало ThingRating, и кажется, что это вывело бы большую часть функциональности из ThingRating (getSum, getAverage и т. д.), но наличие функциональности в стоимостных объектах делает их не значимыми объектами (насколько я понял), что означает, что у меня есть 2 разных бизнес-объекта, каждый из которых содержит часть функциональности рейтинга, это кажется плохим машиностроение.

Другая возможность — иметь объект значения с рейтингом всего 1 параметр. Но тогда я думаю, что мне понадобится свойство, чтобы знать, для какого параметра объект значения имеет оценку, что будет означать либо строку с именем параметра, либо другой объект значения.

Я действительно не понимаю, по какому пути идти, или я иду в неправильном направлении, или просто перебираю силы. Это мое первое путешествие в DDD, а это значит, что, скорее всего, я просто смешиваю термины и понятия, поэтому указатели на то, на чем и на чем сфокусироваться мое концептуальное исследование, ценятся так же, как указатели, непосредственно связанные с моей проблемой.

0

Решение

Из того, что я понимаю, ThingRating был бы агрегатным корнем с judid, thingId и param1-4 (с тщательным названием). Свойства param будут иметь тип RatingValue, который будет объектом значения, обеспечивающим рейтинг 1-5. Уникальное ограничение базы данных будет использоваться для предотвращения оценки одного и того же пользователя несколько раз. Кроме того, «но наличие функциональности в объектах-значениях делает их не объектами-значениями (насколько я понял)» не соответствует действительности. VO являются неизменными, но все еще могут иметь поведение.

«Итак, вы предлагаете сохранить 4 параметра в ThingRating и
и используйте RatingValue для ограничения ввода. «- Яриськов

Именно так!

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector