我正在嘗試將我的對象更改爲富域模型。我原來的班,試圖用豐富的域模型來取代它之前,是這樣的:如何正確實現依賴注入的豐富域模型
public class StudentLogic : IStudentLogic
{
private IUnitOfWork _uow;
private IStudentRepository _studentRepository;
public StudentLogic(IUnitOfWork uow,
IStudentRepository studentRepository)
{
_uow = uow;
_studentRepository = studentRepository;
}
public int CreateStudent(IStudent newStudent)
{
return _studentRepository.Create(newStudent);
}
}
隨着IStudent聲明:
public interface IStudent
{
string FirstName { get; set; }
string LastName { get; set; }
}
所以現在我嘗試轉換爲富域模型。
學生不能存在沒有名字和姓氏,所以根據我讀到的有關豐富域模型的內容,這應該包含在構造函數中。我爲學生提供的豐富域名模型如下所示:
public class Student : IStudent
{
public Student(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public int Create()
{
return _studentRepository.Create(this);
}
}
如何注入UoW和Repository?將它與firstName和lastName一起放入構造函數似乎很尷尬。我所遵循的模式通常是正確的嗎?
在我看來,'Create'方法真的屬於'Student'類。你不應該強迫自己創建一個豐富的域模型。如果某些行爲屬於實體本身,那麼它應該在那裏。如果它不屬於那裏,那麼你不應該強迫它在那裏,即使這意味着有時你最終會形成一個「貧血」模型。 –