Я работаю над проектом с использованием DDD, у меня есть несколько классов, и я не знаю, куда их поместить.Домен или прикладной уровень для некоторых классов в DDD
Домен о существующей игре. В этой игре есть основные понятия, такие как Character, SkillTree. Мой класс домена просто представляет эти понятия. Я не делал эту игру.
Мое приложение/проект о наличии программного обеспечения, которое представляет эти концепции, с некоторыми добавленными значениями. На данный момент имя и описание являются единственными возможными добавленными значениями (например, «Огненный маг» и «Мана зависима, будьте осторожны!»).
Вопрос 1: Имеет ли смысл иметь два класса, или я должен объединить их? В первом случае, где я должен поместить этот класс «с добавленной стоимостью (имя и описание)»? В прикладном уровне?
Вопрос 2: Я правильно говорю, что уровень домена представляет собой сферу знаний, над которыми я работаю, а уровень приложения представляет все вещи, которых нет в домене, но я хочу предоставить, как добавленная стоимость?
(поэтому, если моя программа просто представляет домен, уровень приложений является тонким, и если мое программное обеспечение обеспечивают много гостей функциональных доменов, на прикладном уровне толстая?)
Additonal информация 1: мой проект посвящен созданию симулятора персонажа. Поэтому, чтобы имитировать персонажа, я должен представлять его, а также все его зависимости. Ответ на мой домен должен представлять игру. Он содержит классы, такие как Character, с некоторыми свойствами (Life, Mana, Attack, Defense, Class) и некоторые enum (например, CharacterClass, в котором перечислены все доступные классы).
Теперь я хочу, чтобы мой собственный проект предоставил пользователю возможность создавать проект, представляющий характер игры. Проект также позволяет пользователю сохранять дополнительную информацию, такую как название для текущего проекта, основное (и вторичное) оборудование, основное (и второе) skilltree. Аннотации также доступны для любого набора оборудования и деревьев навыков, поэтому пользователь может просто иметь встроенную заметку/пост-он. Набор инструментов вторичного оборудования и дерева навыков, аннотации не являются существующими концепциями в игре (и, следовательно, не существуют в моем домене).
В вопросе 1 «класс с добавленной стоимостью» представляет собой проект символа, который представляет собой совокупность нескольких информационных данных (оборудование персонажей, дерево навыков, аннотации и т. Д.). Его можно сохранить на физическую поддержку, открыть и отредактировать позже, если пользователь этого захочет.
Реформирование вопроса 1: У меня есть класс символов и класс CharacterProject. Класс CharacterProject представляет собой композицию из нескольких информационных данных. Но это характерно для моего приложения. Имеет ли смысл вкладывать его в прикладной уровень или в доменный уровень или где-то еще?
Чтобы ответить на вопрос 1, вы должны быть более конкретными в отношении концепций домена и их роли: какие типы символов существуют? какие типы навыков существуют? что может сделать персонаж? Как умение влияет на персонажа? Модель домена - это запущенное описание бизнес-логики (в данном случае правила игры): оно должно быть доступно читателю домена (игры)! Таким образом, ответ на вопрос 2 НЕТ. –
@ Giacomo Дополнительная информация 1 была написана, и первый вопрос был переписан. –
Я думаю, что CharacterProject, конечно, не является объектом домена в игре, но это объект домена в вашем приложении. – Hippoom