dev*_*yst 6 entity domain-driven-design business-logic-layer 3-tier
我没有使用任何ORM.因此,我正在讨论"保存"方法是否实际上属于业务域实体,还是应该在某些服务中进行抽象,这些服务将通过业务域实体进行保存?
例如
class Employee
{
string Name;
DateTime Birth;
GetAge()
{
}
Save()
{
}
}
Run Code Online (Sandbox Code Playgroud)
要么
class Employee
{
string Name;
DateTime Birth;
GetAge()
{
}
}
SomePersistenceService
{
Save(Employee emp)
{
}
}
Run Code Online (Sandbox Code Playgroud)
由于这个问题被标记为“领域驱动设计”,因此您需要一个存储库来为您完成它。
只需将 SomePersistenceService 重命名为 EmployeeRepository 即可。所以你的第二个选择是正确的。“在将移交给业务领域实体的某些服务中进行抽象”在领域驱动设计中称为存储库
存储库是一种将数据存储区视为集合的方法。所以它有像Add
and之类的方法Remove
,而不是Save
and Delete
。