Ant*_*eno 7 .net c# architecture domain-driven-design
我知道域和应用程序服务之间的区别.但是无法真正看到域实体和域服务中方法之间的区别:/
我有一个游戏,有State,Players等等.它也有方法,比如AddPlayer,MoveLeft,Jump.这些方法去哪儿了?我应该KOGame仅使用属性创建裸体,然后KOGameServices使用功能吗?
Bob大叔在他的文章在这里写了"一个实体可以与方法的对象,也可以是一组数据结构和功能."
我甚至不想提,类似的方法Move或Jump 将要成为也在应用服务,在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;
}
}
Run Code Online (Sandbox Code Playgroud)
那么,结束我的问题:域服务有哪些方法,域实体有哪些方法?举个例子Class1类,什么时候应该创建Class1Services类?
编辑:
快速解释我为什么选择DDD:我想创建跨平台应用程序,我希望每个平台都有单层通用.我选择C#,在Xamarin我的帮助下,我可以轻松地为每个平台实现单域模型甚至服务.我只是决定在什么方法应该去服务以及什么作为实体的一部分Domain Model
如果某个方法在逻辑上属于某个实体,请将其放在那里.如果没有任何该方法有意义的实体,请将其置于(无状态!)域服务中.
例如,移动玩家的方法应该在玩家实体上 - 将其置于那里感觉很自然,因为它会修改该特定玩家.
另一方面,例如计算两个玩家的得分差异的方法可以实现为域服务.
| 归档时间: |
|
| 查看次数: |
1563 次 |
| 最近记录: |