迪米特法则(LOD)

利用这个原则,能够实现代码的“高内聚、松耦合”。

什么是“高内聚、松耦合”

高内聚、松耦合是一个比较通用的设计思想,可以用来指导不同粒度代码的设计与开发。在这个设计思想中,“高内聚”用来指导类本身的设计,“松耦合”用来指导类与类之间依赖关系的设计。

高内聚有助于松耦合,松耦合又需要高内聚的支持。

什么是高内聚?

所谓的高内聚,就是指相近的功能应该放在同一个类中,不相近的功能不要放在同一个类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中,代码容易维护。

什么松耦合?

所谓的松耦合,就是说,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少导致依赖类的代码改动。

“迪米特法则”理论

Law Of Demeter,缩写为 LOD。也叫作“最小知识原则”:The Least Knowledge Principle。

英文定义为:

Each unit should have only limited knowledge about other units: only units “closely” related to the current unit. Or: Each unit should only talk to its friends; Don’t talk to strangers.

直译也就是:

每个模块(unit)只应该了解那些与它关系密切的模块(units: only units “closely” related to the current unit)的有限知识(knowledge)。或者说,每个模块只和自己的朋友“说话”(talk),不和陌生人“说话”(talk)。

用人话来描述就是:

不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口(也就是定义中的“有限知识”)。

也就是说,不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。