gpt4 book ai didi

domain-driven-design - "Save"方法是否属于业务域实体?

转载 作者:行者123 更新时间:2023-12-04 08:23:22 25 4
gpt4 key购买 nike

我没有使用任何 ORM。因此,我正在争论“保存”方法是否实际上属于业务域实体,还是应该在某些服务中抽象出来,这些服务将移交给业务域实体进行保存?

例如

class Employee
{
string Name;
DateTime Birth;

GetAge()
{

}

Save()
{
}

}

或者

class Employee
{
string Name;
DateTime Birth;

GetAge()
{

}


}

SomePersistenceService
{
Save(Employee emp)
{
}
}

最佳答案

没有单一的最佳解决方案,您所说的问题是存储库和事件记录模式之间的选择。

通常,Repository 更适合单元测试,因为 Repository 接口(interface)易于模拟,而且 Repository 模式使用高内聚和单一职责原则(从 OOP 的角度来看,您的业务实体将包含用于将自身保存到数据库,通过网络传输自身,或导出到某些 XML 等)

Active Record 可能会在 RAD 开发中提供更快的速度,并且像 Spring Roo 这样的一些工具最初设计时只支持 Active Record,据我所知,最近才添加了 Repository 支持。 AFAIK Ruby On Rails 使用 Active Record,以及其他一些很棒的工具。

至于领域驱动设计,您应该按照 Jeroen 的建议使用 Repository,因为 Repository 是基本的 DDD 模式(它是 DAO 模式的以领域为中心的版本),但您应该检查您的工具是否直接支持这两种模式。

关于domain-driven-design - "Save"方法是否属于业务域实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com