迪米特法则(最少知道原则):封装,只和朋友通信
什么是朋友?
1.类中的字段
2.方法的返回值
3.方法的参数
4.方法中的实例对象
5.对象本身
6.集合中的泛型
最少知道原则
反例:关闭电脑的流程
class Computers{ public void closeFile(){ System.out.println("关闭文件"); } public void closeScreen(){ System.out.println("关闭屏幕"); } public void powerOff(){ System.out.println("断电"); } } class Person{ private Computers computers; public void offComputers(){ computers.closeFile(); computers.closeScreen(); computers.powerOff(); } }
当用户关闭电脑时,需要调用计算机的各个方法,但是这些方法的细节太多了,会出现用户流程出错,遗漏调用等等,对于用户来言,他只需要知道关机按钮就够了
正例:封装细节,提供接口
class Computers{ public void closeFile(){ System.out.println("关闭文件"); } public void closeScreen(){ System.out.println("关闭屏幕"); } public void powerOff(){ System.out.println("断电"); } public void offComputers(){ closeFile(); closeScreen(); powerOff(); } } class Person{ private Computers computers; public void offComputers(){ computers.offComputers(); } }