Я знаю разницу между сервисами домена и приложений. Но не может реально увидеть разницу между методами в области сущностей и служб домена:/Доменные службы и методы сущности в доменной модели
У меня есть игра, которая имеет State
, Players
и т.д .. Он также имеет такие методы, как AddPlayer
, MoveLeft
, Jump
. Куда идут эти методы? Должен ли я создать голый KOGame
с только свойствами, а затем KOGameServices
с функциональностью?
Дядя Боб в своей статье here написал «Сущность может быть объектом с методами или может быть набором структур данных и функций».
Я даже не хочу отметить, что такие методы, как Move
или Jump
придется быть также в App Услуги в KOGameAPI
- вызвать эти методы необходимы UI (через интерфейсы, конечно).
Вот мой класс:
public class KOGame
{
public GameState State { get; set; }
public IList<Player> Players { get; set; }
public int PlayersCount;
public KOGame()
{
State = GameState.New;
PlayersCount = 2;
Players = new List<Player>();
}
public void AddPlayer(Player player)
{
}
public bool MoveRight(int id)
{
return false;
}
public bool MoveLeft(int id)
{
return false;
}
public bool Jump(int id)
{
return false;
}
}
Итак, укутать на мой вопрос: Какие методы идет в доменных службах и какие методы идет к Entities домена? Имея, например, класс Class1
, когда следует создать класс Class1Services
?
EDIT: Только быстрое объяснение, почему я выбираю DDD
: Я хочу создать кросс приложение платформы, и я хочу иметь один слой общей для каждой платформы. Я выбираю C#
, вызываю с помощью Xamarin
Я могу легко реализовать однодоменную модель и даже услуги для каждой платформы. Я просто застрял при решении вопроса о том, какие методы следует использовать в Сервисах, и что в составе объектов в Domain Model
Луковая архитектура, DDD, услуги доменов, услуги Applicacion ... Для архитектуры видеоигры? Я думаю, что вы ошибетесь. – jlvaquero
@jlvaquero +1, для некоторых медленных игр на основе браузера это может быть вариант, но здесь это похоже на игру в реальном времени, поэтому я определенно соглашусь, что DDD не подходит. – guillaume31
@jlvaquero Хорошо, но вопрос в том, какие методы относятся к доменным службам и какие методы относятся к объектам домена? Имея, например, класс Class1, когда я должен создать класс Class1Services? –