得墨忒耳法则:论证方法说明

Law of Demeter: Argument method clarification

所以得墨忒耳定律本质上是为了减少模块之间的耦合。我正在写一些例子来确保我在概念上理解这个概念。我写的代码在下面,只是想澄清一下。根据我的理解,首选 classes 的集合包括:class 汽车实例变量的 classes,方法 foo 的参数 classes 或 class汽车本身。由于第 3 行是通过汽车 class 本身的方法对卡车进行操作的,据我所知,这符合得墨忒耳法则。谁能给我澄清一下?

public void foo( vehicle car ) {
    vehicle truck = car;
    truck.do(truck);
}

以上代码没有

是的,它确实违反了得墨忒耳法则。它通过卡车到达 car.do(),使用卡车(参数汽车的别名)作为参数。汽车本身作为参数传递)