Demeter Law - 在另一个 class 的方法中调用 class 的方法
Demeter Law - Calling a method of a class inside another method of a different class
如果我有一个 class C 包含一个方法 f,该方法将 D 类型的对象作为参数(我定义的另一个 class)
如果我在方法f里面调用对象D的方法,会不会违反得墨忒耳定律?为什么?
例如:
public C {
public void f(D object) {
int x = object.sumOfNumbers(2,3);
}
}
这个调用并没有违反得墨忒尔定律。要违反它,您需要这样做:
In this case, an object A can request a service (call a method) of an
object instance B, but object A should not "reach through" object B to
access yet another object, C, to request its services
来源:Wikipedia
您没有到达代码中的对象 C。
使用维基百科中使用的 class 个名称(A、B、C),您的问题代码应如下所示:
public class A {
public void f(B object) {
int x = object.sumOfNumbers(2,3);
}
}
这里没有你访问的Cclass
这里违反了这条法律:
public class A {
public void f(B object) {
C myC = object.getC();
int x = myC.sumOfNumbers(2,3);
}
}
如果我有一个 class C 包含一个方法 f,该方法将 D 类型的对象作为参数(我定义的另一个 class)
如果我在方法f里面调用对象D的方法,会不会违反得墨忒耳定律?为什么?
例如:
public C {
public void f(D object) {
int x = object.sumOfNumbers(2,3);
}
}
这个调用并没有违反得墨忒尔定律。要违反它,您需要这样做:
In this case, an object A can request a service (call a method) of an object instance B, but object A should not "reach through" object B to access yet another object, C, to request its services
来源:Wikipedia
您没有到达代码中的对象 C。
使用维基百科中使用的 class 个名称(A、B、C),您的问题代码应如下所示:
public class A {
public void f(B object) {
int x = object.sumOfNumbers(2,3);
}
}
这里没有你访问的Cclass
这里违反了这条法律:
public class A {
public void f(B object) {
C myC = object.getC();
int x = myC.sumOfNumbers(2,3);
}
}