面向对象的经典设计原则 —— 迪米特法则(最少知道原则)

tech2025-05-19  11

设计模式之美 - 22

迪米特法则,利用这个原则可以帮我们实现代码的“高内聚,低耦合”。

什么是“高内聚、松耦合”?如何利用迪米特法则来实现“高内聚、松耦合”?有哪些代码设计是明显违背迪米特法则的?对此又该如何重构?

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

“高内聚、松耦合”是一个非常重要的设计思想,能够有效地提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围。很多设计原则都以实现代码的“高内聚、松耦合”为目的,比如单一职责原则、基于接口而非实现编程等。在这个设计思想中,“高内聚”用来指导类本身的设计,“松耦合”用来指导类与类之间依赖关系的设计。

 

二、迪米特法则(最少知道原则)

迪米特法则的英文翻译是:Law of Demeter,缩写是 LOD。英文翻译为:The Least Knowledge Principle。

法则的含义:不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。

 

对于 “不该有直接依赖关系的类之间,不要有依赖”。我举个例子解释一下。 public class NetworkTransporter { // 省略属性和其他方法... public Byte[] send(HtmlRequest htmlRequest) { //... } } public class HtmlDownloader { private NetworkTransporter transporter;//通过构造函数或IOC注入 public Html downloadHtml(String url) { Byte[] rawHtml = transporter.send(new HtmlRequest(url)); return new Html(rawHtml); } } public class Document { private Html html; private String url; public Document(String url) { this.url = url; HtmlDownloader downloader = new HtmlDownloader(); this.html = downloader.downloadHtml(url); } //... }

 

最新回复(0)