我试图了解Anemic域模型以及为什么它们被认为是反模式。
这是一个真实的例子。
我有一个Employee类,它具有大量属性-名称,性别,用户名等
public class Employee
{
public string Name { get; set; }
public string Gender { get; set; }
public string Username { get; set; }
// Etc.. mostly getters and setters
}
接下来,我们有一个系统,该系统涉及在销售人员之间平均轮流传入电话和网站查询(称为“潜在客户”)。该系统非常复杂,因为它涉及轮循查询,检查假期,员工喜好等。因此,该系统目前被分离为一项服务:EmployeeLeadRotationService。
public class EmployeeLeadRotationService : IEmployeeLeadRotationService
{
private IEmployeeRepository _employeeRepository;
// ...plus lots of other injected repositories and services
public void SelectEmployee(ILead lead)
{
// Etc. lots of complex logic
}
}
然后,在我们的网站查询表的背面,我们有如下代码:
public void SubmitForm()
{
var lead = CreateLeadFromFormInput();
var selectedEmployee = Kernel.Get<IEmployeeLeadRotationService>()
.SelectEmployee(lead);
Response.Write(employee.Name + " will handle your enquiry. Thanks.");
}
使用这种方法我并没有遇到很多问题,但是应该说这是我应该大呼过瘾的东西,因为它是Anemic Domain Model。
但对我来说,不清楚领导轮换服务中的逻辑应该去哪里。它应该领先吗?应该在员工身上吗?
轮换服务所需的所有注入存储库等如何-考虑到大多数时候与员工打交道,我们不需要这些存储库,它们将如何注入到员工中呢?
ILead
,如果不明显将.SelectEmployee()放入其中,会是什么样子呢?