Tôi đang cố gắng hiểu Mô hình miền thiếu máu và tại sao chúng được cho là mô hình chống lại.
Đây là một ví dụ thực tế.
Tôi có một lớp Nhân viên, lớp này có rất nhiều thuộc tính - tên, giới tính, tên người dùng, v.v.
public class Employee
{
public string Name { get; set; }
public string Gender { get; set; }
public string Username { get; set; }
// Etc.. mostly getters and setters
}
Tiếp theo, chúng tôi có một hệ thống liên quan đến việc luân phiên các cuộc gọi đến và các câu hỏi về trang web (được gọi là 'khách hàng tiềm năng') đồng đều giữa các nhân viên bán hàng. Hệ thống này khá phức tạp vì nó liên quan đến các yêu cầu tổng hợp vòng tròn, kiểm tra ngày nghỉ, sở thích của nhân viên, v.v. Vì vậy, hệ thống này hiện được tách thành một dịch vụ: 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
}
}
Sau đó, ở mặt sau của biểu mẫu yêu cầu trang web của chúng tôi, chúng tôi có mã như sau:
public void SubmitForm()
{
var lead = CreateLeadFromFormInput();
var selectedEmployee = Kernel.Get<IEmployeeLeadRotationService>()
.SelectEmployee(lead);
Response.Write(employee.Name + " will handle your enquiry. Thanks.");
}
Tôi không thực sự gặp nhiều vấn đề với cách tiếp cận này, nhưng được cho là đây là thứ mà tôi nên chạy vì nó là Mô hình miền thiếu máu .
Nhưng đối với tôi, nó không rõ ràng là logic trong dịch vụ luân chuyển khách hàng tiềm năng sẽ đi đến đâu. Nó có nên đi đầu không? Nó có nên đi vào nhân viên không?
Còn về tất cả các kho lưu trữ được đưa vào, v.v. mà dịch vụ luân chuyển yêu cầu - chúng sẽ được đưa vào nhân viên như thế nào, vì hầu hết thời gian khi giao dịch với nhân viên chúng ta không cần bất kỳ kho lưu trữ nào trong số này?
ILead
cái nhìn như thế nào, nếu nó không rõ ràng để đặt .SelectEFastee () trong đó?