迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则
定义
一个对象应该对其他对象有最少的了解。
也就是说一个类耦合和调用一个类应该知道的最少,它只关心被耦合和调用的类的公共方法,而被耦合和调用的类如何复杂它并不关心。这在另一程度也说明类方法的最小权限性,不要随意定义public公开方法,你只公开你需要公开的。
迪米特原则对类的低耦合度提出了以下几点要求:
1、只和朋友类交流
类与类之间的交流无需知道内部结构,其内部与其他陌生类打交道我并不关心。
2、朋友类之间的距离
一个类公开的属性和方法越多,其被修改的可能性也会更大,所以在设计一个的时候要权衡利弊,把范围定义在合理的范围内。
所以,迪米特很明显的优点是低耦合度,提高了系统的可维护性和可扩展性。 但另一方面,为了满足这些特性而又不得不增加很多包装的类或方法,这在一定程度上也就提高了类的复杂性。