Я пытаюсь понять модели анемичных доменов и почему они предположительно являются анти-паттернами.
Вот пример из реального мира.
У меня есть класс 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.");
}
На самом деле я не сталкиваюсь со многими проблемами с этим подходом, но, предположительно, я должен кричать об этом, потому что это Модель анемичной области .
Но для меня неясно, куда должна идти логика в службе чередования лидов. Должен ли он идти впереди? Должен ли он пойти на сотрудника?
Как насчет всех внедренных репозиториев и т. Д., Которые требуются службе ротации - как они будут внедрены в сотрудника, учитывая, что в большинстве случаев при работе с сотрудником нам не нужны эти репозитории?