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

Domain driven design 创建域设计模型的最佳方法?,domain-driven-design,domain-data-modelling,Domain Driven Design,Domain Data Modelling,更新: 我想知道的是,我是否应该单独创建每个类,而不是在类中添加getter/setter属性,我的意思是: 因此,为了创建访问,我应该在访问中使用以下道具 VisitName, Purpose, StartDate, EndDate, HostId, HostName, RequesterId, RequeserName 或者我应该有这个: VisitName, Purpose, StartDate, EndDate, IPerson Host, IPerson Requester 结束更

更新:

我想知道的是,我是否应该单独创建每个类,而不是在类中添加getter/setter属性,我的意思是:

因此,为了创建访问,我应该在访问中使用以下道具

VisitName, Purpose, StartDate, EndDate, HostId, HostName, RequesterId, RequeserName
或者我应该有这个:

VisitName, Purpose, StartDate, EndDate, IPerson Host, IPerson Requester
结束更新

我需要的建议/反馈,如果我在下面的正确方向是领域模型(项目的一部分,不完全)

我有一个叫做“访问”的课程,在这个访问模型中,我将有访问的基本信息,如名称、目的、开始、结束日期等。。。在那节课上,我还有谁将主持这次访问,谁要求访问

你觉得下面这个班怎么样

 //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() { }


}

这看起来还可以作为一个开始,但在您真正开始编码和测试初始域模型之前,我不会创建一个硬性的域模型,因为您可能会发现事情并不像预期的那样正常工作,或者您遗漏了一些东西,或者需求发生了变化等等

快速查看的其他要点

  • VisitBasic的用途是什么?它应该是一个抽象基类还是一个更清晰的名称
  • 您可能希望将主机放入它自己的类中,它可能具有与person类无关的信息,因此可能是person的子类。但是如上所述,迭代开发它可能更好。也可能是请求者,但可能性较小
更新响应:
现在大多数事情的标准设计是添加一个服务层,即带有createVisit方法的VisitService,并且访问对象上的属性应该只链接到主机和请求者,而不包含任何业务逻辑。(希望这能回答您的问题?

这看起来还可以作为一个开始,但在您实际开始编码和测试初始域模型之前,我不会创建一个硬性的域模型,因为您可能会发现事情并不像预期的那样运行,或者您遗漏了一些东西,或者需求发生了变化,等等

快速查看的其他要点

  • VisitBasic的用途是什么?它应该是一个抽象基类还是一个更清晰的名称
  • 您可能希望将主机放入它自己的类中,它可能具有与person类无关的信息,因此可能是person的子类。但是如上所述,迭代开发它可能更好。也可能是请求者,但可能性较小
更新响应:
现在大多数事情的标准设计是添加一个服务层,即带有createVisit方法的VisitService,并且访问对象上的属性应该只链接到主机和请求者,而不包含任何业务逻辑。(希望这能回答你的问题?)

请继续提问。谢谢,我不知道。是的,现在有那么多不同的论坛,我们很快就会有一个关于厨房水槽的好处的论坛。请继续提问。谢谢,我不知道。是的,现在有那么多不同的论坛,我们很快就会有一个关于厨房水槽的好处的论坛。请看我的问题,我刚刚更新了……那么您将把业务逻辑放在哪里呢?在模型中?您基本上将应用程序划分为多个层,即数据访问层、模型层、服务层、gui层,等等,以及它自己的对象。但实际上,这取决于您正在构建的应用程序的类型,应该有一些标准,即microsoft有模式和实践库,并且有大量的设计模式。但是,业务逻辑不应该放在单独的对象(服务或管理器类等)中,而域模型应该只是数据、属性、,既然您已经说过:<代码>域模型应该是数据、属性等.< /代码>,那么,您认为这是一个最好的做法来映射表列,在类(在这种情况下,模型)中用PROP{GET,SET}?请看一下我的问题,我刚刚更新了……那么,你将把业务逻辑放在哪里?在模型中?您基本上将应用程序划分为多个层,即数据访问层、模型层、服务层、gui层,等等,以及它自己的对象。但实际上,这取决于您正在构建的应用程序的类型,应该有一些标准,即microsoft有模式和实践库,并且有大量的设计模式。但是,业务逻辑不应该放在单独的对象(服务或管理器类等)中,而域模型应该只是数据、属性、,既然你已经说过:<代码>域模型应该是数据、属性等.< /Cord>,那么,你认为这是一个最佳的做法,用表中的PROP{GET,SET}来映射表列(在这种情况下是模型)吗?