创建域设计模型的最佳方法?

时间:2011-12-30 03:08:16

标签: domain-driven-design domain-data-modelling

更新:

我正在寻找的是我应该分别创建每个类而不是在课堂上添加getter / setter道具,我的意思是:

所以为了创建一个访问,我应该在VISIT中有以下道具

VisitName, Purpose, StartDate, EndDate, HostId, HostName, RequesterId, RequeserName

或者我应该这样:

VisitName, Purpose, StartDate, EndDate, IPerson Host, IPerson Requester

END UPDATE

如果我正在朝着正确的方向前进,我需要建议/反馈是域模型(项目的一部分不是很好)。

我在访问模型中有一个名为“访问”的课程,我将有基本的访问,如姓名,目的,开始,结束日期等...在那个班级我也有谁将主持访问和谁请求访问。

你怎么看下面的课?

enter image description here

 //aggreate class
public class Visit
{
    IVisitBasic _visitBasic;
    IPerson _host;
    IPerson _requester;

public IVisitBasic VisitBasic
{
    get { return _visitBasic; }
    set { _visitBasic = value; }
}

public IPerson Host
{
    get { return _host; }
    set { _host = value; }
}

public IPerson Requester
{
    get { return _requester; }
    set { _requester = value; }
}

public Visit(IVisitBasic visitBasic, IPerson host, IPerson requester)
{
    _visitBasic = visitBasic;
    _host = host;
    _requester = requester;
}

public Visit() { }

}

1 个答案:

答案 0 :(得分:0)

它看起来还不错,但是在你真正开始编写和测试初始域模型之前,我不会制作一个硬而快的域模型,因为你可能会发现事情并没有像预期那样完全正常工作是你错过的,或者要求改变等等。

快速查看其他要点。

  • 如果它是一个抽象的基类或更明确的名称,那么VisitBasic的目的是什么?
  • 您可能希望将主机放入其自己的类中,它可能具有与人类无关的信息,因此可能是人类的子类。但如上所述,迭代开发它可能更好。也可能是请求者,但可能不太可能。

更新回复: 现在大多数情况下的标准设计是使用createVisit方法添加服务层,即VisitService,访问对象上的属性应该只链接到主机和请求者,而不包含任何业务逻辑。 (希望能回答你的问题吗?)