나는 누군가가 나를 demeter의 법칙을 설명하는 것을 도울 수 있기를 바라고있다. 만약 내가 추측하고있는 클래스가 집계 루트이고 그 안에 자식 클래스의 컬렉션이 있다면 집계 루트를 통해 액세스하여 그 자식 클래스의 속성을 업데이트하는 것은 불법입니까?Demeter confusion의 법칙
public class Company
{
// company has a number of employees
public List<Employee> Employees {get; set;}
}
public class Employee
{
// each employee has a lastname
public int Id {get; set;}
public string LastName {get; set;}
// other properties of employee
}
내가 먼저 회사의 클래스에 액세스가 같은과 데메테르의 법을 위반하는 것입니다 클라이언트가 있다고 할 수 있습니다.
Employee e = aCompany.Employees.Where(e => e.Id == 1).Single();
e.LastName = "MarriedName";
또는
이 항상 클라이언트aCompany.UpdateEmployeeLastName(1, "Marriedname");
두 번째는 더 나은 것 같다에서 회사
public class Company
{
public UpdateEmployeeLastName(int employeeId, string newName)
{
Employee e = Employees.Where(e => e.Id == employeeId).Single();
e.LastName = newName;
}
}
에 위임해야하지만, 클라이언트가 ID를 알고하는 데에 문제가 있나요 업데이트하려는 직원의
중첩 된 집계가 여러 개있는 경우 복잡해지기 시작한 것처럼 보입니다.
감사합니다.
감사합니다. 내 생각을 증명할 누군가가 필요하다고 생각해. :) – mageets