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