5.2 我的知识你知道得越少越好
迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义。
1. 只和朋友交流
迪米特法则还有一个英文解释是:Only talk to your immediate friends
(只与直接的朋友通信。)
什么叫做直接的朋友呢?每个对象都必然会与其他对象有耦合关系,两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等。下面我们将举例说明如何才能做到只与直接的朋友交流。
什么是朋友类
出现在成员变量
、方法的输入输出参数
中的类称为成员朋友类
,而出现在方法体内部的类不属于朋友类。
迪米特法则告诉我们一个类只和朋友类交流
。
注意一个类只和朋友交流,不与陌生类交流
,不要出现getA().getB().getC().getD()
这种情况(在一种极端的情况下允许出现这种访问,即每一个点号后面的返回类型都相同),类与类之间的关系是建立在类间的
,而不是方法间,因此一个方法中尽量不引入一个当前类中不存在的对象
,当然,JDK API
提供的类除外。
2. 朋友间也是有距离的
一个类公开的public
属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。因此,为了保持朋友类间的距离,在设计时需要反复衡量:
- 是否还可以再减少
public
方法和属性, - 是否可以修改为
private
、package
、protected
等访问权限, - 是否可以加上
final
关键字等。
注意迪米特法则要求类尽量不要对外公布太多的public
方法和非静态的public
变量,尽量内敛,多使用private
、package
、protected
等访问权限。
3. 是自己的就是自己的
在实际应用中经常会出现这样一个方法放在本类中也可以,放在其他类中也没有错,那怎么去衡量呢?你可以坚持这样一个原则:如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中。
4. 谨慎使用Serializable
原文链接: 5.2 我的知识你知道得越少越好