Sam*_*l G 2 c# domain-driven-design
我需要一些关于建模以下电影领域的建议.我有一个人实体.这个人可以是演员,导演,制片人和作家,而且往往都是.我不想在每个实体中复制数据,因此最好创建一个名为Person的抽象基类,每个Director,Actor和Writer类都继承自该类.当我看下面的测试时,这已经开始闻到了:
[Test] public void Can_Do_It()
{
var actor = new Actor("Clint Eastwood");
var director = //?? Can new it up as he already exists as actor }
Run Code Online (Sandbox Code Playgroud)
是否更有可能拥有一个Person Class,然后像Writer这样的类接受一个人的实例,即
public class Writer(Person person,string attribute1,string attrribute2){...}
Hen*_*man 10
一个常见的解决方案是引入"角色"的概念(在这种情况下非常合适).一个人可以是0+电影中的演员,和/或填写导演角色.
这也允许您为角色添加属性,如字符名称,日期等
编辑:
Role类与Person和Movie都有双向关联.
class Role
{
public Person Contributor { ... }
public Movie Feature { ... }
public RoleType Activity { ... }
}
class Person
{
public List<Role> Contributions { ... }
}
class Movie
{
public List<Role> Contributors { ... }
...
}
Run Code Online (Sandbox Code Playgroud)