美文网首页
设计模式原则-迪米特法则

设计模式原则-迪米特法则

作者: 格格抖 | 来源:发表于2019-03-21 08:03 被阅读0次

定义:

一个对象应该对其他对象保持最少的了解。

问题由来:

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

解决方案:

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

PS:

自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。

无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。

低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。

迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。

通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,

无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。

迪米特法则还有一个更简单的定义:只与直接的朋友通信。

首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。

耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。

也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。

迪米特法则的初衷是降低类之间的耦合,由于每个类都减少了不必要的依赖,因此的确可以降低耦合关系。

但是凡事都有度,虽然可以避免与非直接的类通信,但是要通信,必然会通过一个“中介”来发生联系。

过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。

相关文章

  • 迪米特法则

    个人博客原文:迪米特法则 设计模式六大原则之五:迪米特法则。 简介 姓名:迪米特法则 英文名:Law of Dem...

  • [Code Design] 六大设计原则之`迪米特法则`

    六大设计原则之迪米特法则 定义 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Know...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 读《设计模式之禅》(二)

    上次看了设计模式的6大设计原则,单一职责原则、开闭原则、迪米特法则、里氏替换原则、接口隔离原则、依赖倒置原则。这次...

  • 设计模式---外观设计模式

    外观模式 标签(空格分隔): 设计模式 在设计模式中有一个法则叫迪米特法则(最少知识原则),它说的是什么呢? 一个...

  • 迪米特法则

    迪米特法则 迪米特法则定义 迪米特法则(Law Of Demeter, LoD) 也成为最少知识原则(Least ...

  • 迪米特法则

    迪米特法则 迪米特法则的定义 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least K...

  • 手撸golang 架构设计原则 迪米特法则

    手撸golang 架构设计原则 迪米特法则 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以ja...

  • 设计模式原则-迪米特法则

    定义: 一个对象应该对其他对象保持最少的了解。 问题由来: 类与类之间的关系越密切,耦合度越大,当一个类发生改变时...

  • 设计原则-保变原则

    众所周知,设计模式有六大原则:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。那么这...

网友评论

      本文标题:设计模式原则-迪米特法则

      本文链接:https://www.haomeiwen.com/subject/khmamqtx.html