Loading... > 迪米特法则的英文翻译是:Law of Demeter,缩写是 LOD。 利用这个原则,能够帮我们实现代码的“高内聚、松耦合”。 依赖注入、接口隔离、基于接口而非实现编程,以及迪米特法则,都是为了**实现代码的松耦合** # 一、“迪米特法则”理论描述 每个模块(unit)只应该了解那些与它关系密切的模块(units: only units “closely” related to the current unit)的有限知识(knowledge)。或者说,每个模块只和自己的朋友“说话”(talk),不和陌生人“说话”(talk)。 # 二、何为“高内聚、松耦合”? > 很多设计原则都以实现代码的“高内聚、松耦合”为目的,比如**单一职责原则、基于接口而非实现**编程等。 “高内聚”用来指导类本身的设计,“松耦合”用来指导类与类之间依赖关系的设计。 “高内聚、松耦合”是一个比较通用的设计思想,可以用来指导不同粒度代码的设计与开发,比如系统、模块、类,甚至是函数,也可以应用到不同的开发场景中,比如微服务、框架、组件、类库等。 ## 1、那到底什么是“高内聚”呢? > 所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一个类中。 ## 2、什么是“松耦合”? > 在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少导致依赖类的代码改动。 ## 3、“内聚”和“耦合”之间的关系 > “高内聚”有助于“松耦合”,同理,“低内聚”也会导致“紧耦合”  左边部分的代码设计中,类的粒度比较小,每个类的职责都比较单一。 相近的功能都放到了一个类中,不相近的功能被分割到了多个类中。这样类更加独立,代码的内聚性更好。因为职责单一,所以每个类被依赖的类就会比较少,代码低耦合。 右边部分的代码设计中,类粒度比较大,低内聚,功能大而全,不相近的功能放到了一个类中。这就导致很多其他类都依赖这个类。那么当新需求来时,**当我们修改这个类的某一个功能代码的时候,会影响依赖它的多个类**。我们需要测试这三个依赖类,是否还能正常工作。这也就是所谓的“牵一发而动全身”。 对比左图和右图: 高内聚、低耦合的代码结构更加简单、清晰,相应地,在可维护性和可读性上确实要好很多。 最后修改:2025 年 07 月 01 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏