Прямой компонентный объект
Я не понимаю, что означает прямая составляющая объекта в контексте статьи закона Деметры. Как я вижу, термин был взят из статьи Дэвида Блока. Итак, что такое термин и где я могу получить примеры из жизни и больше информации о нем?
1 ответ
Прямые компонентные объекты в этом случае являются переменными-членами класса. Например:
class MyClass
{
IService service;
public MyClass(IService service)
{
this.service = service;
}
public void MyMethod(Param param)
{
// O itself
this.AnotherMethod();
// m's parameters
param.Method1();
// Any objects created/instantiated within m
TempObject temp = new TempObject();
temp.DoSomething();
// O's direct component objects
service.ProvideService();
// violates Law of Demeter
service.GetConfig().Update();
}
private void AnotherMethod()
{
...
}
}
В этом примере показаны различные вызовы методов, которые считаются соответствующими закону Деметры. Переменная-член service
в данном случае это прямой компонент объекта.