迪米特法则(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)。
用人话来描述就是:
不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口(也就是定义中的“有限知识”)。
也就是说,不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。