0%

5.2 我的知识你知道得越少越好

5.2 我的知识你知道得越少越好

迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义。

1. 只和朋友交流

迪米特法则还有一个英文解释是:Only talk to your immediate friends(只与直接的朋友通信。)

什么叫做直接的朋友呢?每个对象都必然会与其他对象有耦合关系,两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等。下面我们将举例说明如何才能做到只与直接的朋友交流。

什么是朋友类

出现在成员变量方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
迪米特法则告诉我们一个类只和朋友类交流

注意一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点号后面的返回类型都相同),类与类之间的关系是建立在类间的,而不是方法间,因此一个方法中尽量不引入一个当前类中不存在的对象,当然,JDK API提供的类除外。

2. 朋友间也是有距离的

一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。因此,为了保持朋友类间的距离,在设计时需要反复衡量:

  • 是否还可以再减少public方法和属性,
  • 是否可以修改为privatepackageprotected等访问权限,
  • 是否可以加上final关键字等。

注意迪米特法则要求类尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用privatepackageprotected等访问权限。

3. 是自己的就是自己的

在实际应用中经常会出现这样一个方法放在本类中也可以,放在其他类中也没有错,那怎么去衡量呢?你可以坚持这样一个原则:如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中

4. 谨慎使用Serializable

原文链接: 5.2 我的知识你知道得越少越好