Demeter Law - 在另一个类的另一个方法中调用类的方法

时间:2017-10-19 15:34:13

标签: java law-of-demeter

如果我有一个包含方法f的类C,它将D类对象作为参数(我定义的另一个类)

如果我在方法f中调用对象D的方法,我会违反得墨忒耳的法则吗?为什么?

例如:

public C {
    public void f(D object) {
        int x = object.sumOfNumbers(2,3);
    }
}                    

1 个答案:

答案 0 :(得分:2)

此次通话不违反得墨忒耳的法律。要违反它,你需要这样做:

  

在这种情况下,对象A可以请求服务(调用方法)   对象实例B,但是对象A不应该通过"到达"对象B到   访问另一个对象C,以请求其服务

来源:Wikipedia

您的代码中没有到达对象C.

使用维基百科中使用的类名(A,B,C),您的问题代码应如下所示:

public class A {
    public void f(B object) {
        int x = object.sumOfNumbers(2,3);
    }
}

这里没有您正在访问的C类。

这违反了这项法律:

public class A {
    public void f(B object) {
        C myC = object.getC();
        int x = myC.sumOfNumbers(2,3);
    }
}