一、什么是迪米特法则?
每个软件实体对其他的实体只有最少的了解,而且仅限于那些与本实体密切相关的软件实体 。
也可说成:
只与直接的朋友通信 。
二、狭义迪米特法则
如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中的一个类需要调用另一个类的方法,可通过第三者来转发。
狭义迪米特法则有一个明显的缺点:会在系统里产生大量的小方法,而且很可能散落在各个角落。会导致不同模块之间的通信效率降低,不容易协调。
为了弥补这个缺点,可结构依赖倒转原则。依赖于抽象的陌生人。也就是添加抽象陌生人,然后说将抽象陌生人当作朋友。
三、广义迪米特法则
广义迪米特法则要求尽可能的隐藏实现细节:
(1) 优先将一个类设置成不变类。
(2) 尽量降低一个类的访问权限
(3) 尽量降低成员的访问权限
(4) 限制局部变量的有效范围