- Учитывая
Employee
сущность и кучу личной / организационной информации (например, семейное положение , информация о детях , отдел , 1010 * положение *).Должна ли вся личная информация быть представлена как компоненты / объекты-ценности, или лучше, чтобы информация находилась внутри класса сущности? Будет ли использоваться человек (который может собрать всю личную информацию) Значение объекта в качестве базового объекта (composition
) для объекта Employee
будет плохим выбором дизайна?
Кроме того, как такое поведение смоделировано должным образом (с точки зренияDDD
): If employee has kids then it should have a birth certificate (with corresponding data: name, issue date, etc)
или If employee is married then it should have marriage certificate (with corresponding data: spouse name, etc)
?
Для детского случая я решил использовать ChildrenInformation
объект значения:
public class ChildrenInformation
{
public String BirthCertificateCode { get;set; }
public DateTime BirthCertificateIssueDate { get;set; }
public ChildName { get; set; }
public ChildMiddleName { get; set; }
public ChildLastName { get; set; }
public DateTime ChildBirthday{ get; set; }
}
public class Employee : AbstractEntity<Employee>, IAggregateRoot
{
public ISet<ChildrenInformation> ChildrenInformation { get; set; }
/* other things ...*/
}
Разве это не было бы неправильно с точки зрения дизайна?
РЕДАКТИРОВАТЬ
Еще одна мысль - поделиться Certificate
классом.
[Serializable]
public class Certificate
{
public String Code { get; set; }
public String Number { get; set; }
public String RegistreeName { get; set; }
public Address RegistreeAddress { get; set; }
public String RegistreeDateOfBirth { get; set; }
public String RegistredAt { get; set; }
public DateTime DateRegistred { get; set; }
}
[Serializable]
public class Employee : AbstractEntity<Employee>, IAggregateRoot
{
public Certificate Passport { get; set; }
public Certificate MarriageCertificate { get; set; }
public ISet<Certificate> ChildrenBirthCertificates { get; set; }
}
Спасибо!