其实我不懂只是看着写的好装载的,不喜勿喷
概念:
迪米特法则也称为最少知识原则。一个类应该对自己需要耦合或调用的类知道得最少,
你(被耦合或调用的类)的内部是如何复杂都和我没关系那是你的事情,我就知道你提供的public方法,我就调用这么多,其他的一概不关心。
所谓的调用的类(朋友类):
出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
方法是类的一个行为,类竟然不知道自己的行为与其他类产生了依赖关系,这是不允许的。
正确的做法是:
1 public class Teacher {
2
3 public void commond(GroupLeader groupLeader) {//传了一个GroupLeader类的对象作为形参,此处GroupLeader作为朋友类
4 groupLeader.countGirls();5 //调用朋友类公开的方法,这个是可以的
}
6
7 }
以下是他朋友类的复杂的内部:
01 public class GroupLeader {
02
03 private List<Girl> listGirls;//他的属性是ist<Girl>类型的对象
04
05 public GroupLeader(List<Girl> _listGirls) {//构造方法
06 this.listGirls = _listGirls;//初始化这个属性
07 }
08
09 public void countGirls() {//公开一个方法
10 System.out.println("女生数量是:" + listGirls.size());//调用了形参的方法
11 }
12
13 }
总结:
类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不引入一个类中不存在的对象,当然,JDK API提供的类除外。
使用注意点:
迪米特法则要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。
如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,就放置在本类中。
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。