迪米特法则

迪米特法则

定义

也被称为最少知识原则(Least knowledge Principle,LKP)
也可以表述为 一个对象应该对其他对象有最少的了解,即一个类应该对自己需要耦合或调用的类知道的最少

问题由来

类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

解决方案

尽量降低类与类之间的耦合。

实例演示

Sunny软件公司所开发CRM系统包含很多业务操作窗口,在这些窗口中,某些界面控件之间存在复杂的交互关系,一个控件事件的触发将导致多个其他界面控件产生响应,例如,当一个按钮(Button)被单击时,对应的列表框(List)、组合框(ComboBox)、文本框(TextBox)、文本标签(Label)等都将发生改变,在初始设计方案中,界面控件之间的交互关系可简化为如图所示结构:

在图中,由于界面控件之间的交互关系复杂,导致在该窗口中增加新的界面控件时需要修改与之交互的其他控件的源代码,系统扩展性较差,也不便于增加和删除新控件。现使用迪米特对其进行重构。

在本实例中,可以通过引入一个专门用于控制界面控件交互的中间类(Mediator)来降低界面控件之间的耦合度。引入中间类之后,界面控件之间不再发生直接引用,而是将请求先转发给中间类,再由中间类来完成对其他控件的调用。当需要增加或删除新的控件时,只需修改中间类即可,无须修改新增控件或已有控件的源代码,重构后结构如图所示:

参考:https://blog.csdn.net/lovelion/article/details/7563445

https://www.jianshu.com/p/14589fb6978e

https://blog.csdn.net/nobody_1/article/details/86683793

原文地址:https://www.cnblogs.com/LiaoMengyu/p/12562993.html