直接组件对象

时间:2018-01-10 09:33:45

标签: oop coupling law-of-demeter

我不明白直接组件对象Law of Demeter's article的上下文中的含义。我可以看到这个词来自David Block's article。那么,这个术语是什么?我在哪里可以得到真实的例子和更多关于它的信息?

1 个答案:

答案 0 :(得分:2)

在这种情况下,

直接组件对象是该类的成员变量。例如:

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()
    {
        ...
    }
}

此示例显示了被认为符合Demeter法则的各种方法调用。在这种情况下,成员变量service是直接组件对象。