迪米特法则(Law of Demeter, LoD)又称为最少知识原则(Least Knowledge Principle, LKP),它有多种定义方法,其中几种典型定义如下:
(1) 不要和“陌生人”说话。
(2) 只与你的直接朋友通信。
(3) 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
(4) 一个对象应当对其他对象有尽可能少的了解。
迪米特法则要点:
迪米特法则说的是一个对象应该对其它对象有尽可能少的了解。即只与你直接的朋友通信,不要跟陌生人说话。如果需要和陌生人通话,而你的朋友与陌生人是朋友,那么可以将你对陌生人的调用由你的朋友转发,使得某人只知道朋友,不知道陌生人。换言之,某人会认为他所调用的是朋友的方法。
以下条件称为朋友的条件:
1) 当前对象本身
2) 以参量的形式传入到当前对象方法中的对象
3) 当前对象的实例变量直接引用的对象
4) 当前对象的实例变量如果是一个聚集,那么聚集中的元素也都是朋友
5) 当前对象所创建的对象
迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:
1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用
2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性
3) 在类的设计上,只要有可能,一个类应当设计成不变类
4 ) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低