迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP),虽然名字不相同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。
迪米特法则对类的低耦合提出了明确的要求,其包含以下四层含义:
- 只和朋友联系
出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。方法是一个类的行为,类竟然不知道自己的行为于其他类产生依赖关系,这是不允许的,严重违反了迪米特法则
- 朋友之间也是有距离的
- 是自己的就是自己的
- 谨慎使用Serializable