一、定义
一个对象应该对其他对象有最少的了解。
在介绍具体含义之前先解释下什么是朋友类:
出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
最少知识原则的包含的具体含义:
- 只和朋友交流。类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不引入一个类中不存在的对象。换句话说在方法中应尽量避免调用朋友返回的对象(朋友的朋友)的方法。当然,JDK API提供的类除外。
- 朋友间也是有距离的。尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。
- 是自己的就是自己的。如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中。
二、优缺点
(一)优点
降低模块间的耦合,提升了软件的可维护性和可重用性。
(二)缺点
在系统里造出大量的小方法,这些方法仅仅是传递间接的调用,与系统的业务逻辑无关。
三、建议
- 如果一个类跳转两次以上才能访问到另一个类,就需要想办法进行重构了。
- 需要反复权衡,既做到让结构清晰,又做到高内聚、低耦合。