Least Knowledge Principle LKP,"迪米特原则":一个对象应该对其他对象有最少的了解。通俗的说就是,一个类应该对自己需要耦合或调用的类知道的最少,你(被耦合或调用的类)的内部是如何的复杂和我没关系,我就知道你提供这么多的public方法,我就调用这么多方法,其他的我一概不关心。
迪米特原则的核心就是解耦合,它对类的低耦合提出一些要求:
- 只和朋友交流。 朋友的定义:出现在成员变量、方法的输入输出中的类称为朋友类,而出现在方法体内部的类不属于朋友类。
以上代码中,Teacher类与入参GroupLeader为朋友关系,但是与方法中的Girl也有了交流,破坏了Teacher类的健壮性,方法时类的一个行为,类竟然不知道自己的行为与其他类产生关联,违反了迪米特原则,下面进行一次修改。
这样Teacher类不与Girl类进行耦合,提高了代码健壮性。
2.朋友间是有距离的。
朋友不要把太多的类暴露出来,比如一个方法需要朋友.a() 朋友.b() 朋友.c()才可以实现,这样的话在朋友类创建一个新方法e包含a、b、c,调用方只需要调用朋友的e方法即可,而不是把abc都暴露出去。
尽量不要对外公布太多的public方法和非静态的public变量,多使用private、protected等访问权限。