七大原则之 迪米特法则(最少知道原则)
- 迪米特法则(最少知道原则):
一个类,对于其它类,要知道得越少越好
只和朋友通信
- 什么是朋友:
a. 类中的字段
b. 方法的参数
c. 方法的返回值
d. 方法中实例出来的对象
反例:
class Computer {
public void saveData() {
System.out.println("保存数据");
}
public void killProcess() {
System.out.println("关闭程序");
}
public void closeScreen() {
System.out.println("关闭屏幕");
}
public void poweroff() {
System.out.println("断电");
}
}
class Person {
private Computer c = new Computer();
public void shutdownComputer() {
c.saveData();
c.killProcess();
c.closeScreen();
c.poweroff();
}
}
- 此时,这个Person对Computer得细节知道的太多了.
- 对于Person而言,只需要知道,关机按钮在哪就行,不需要知道如果保存数据,如果关闭进程,如何断电等等细节…
- 这样的话,代码的复杂度就提升了!! 万一用户使用不当,就可以造成更大的损失
- 例如: 不小心先断电,而没有保存数据,会造成损失.
正例:
class Computer {
private void saveData() {
System.out.println("保存数据");
}
private void killProcess() {
System.out.println("关闭程序");
}
private void closeScreen() {
System.out.println("关闭屏幕");
}
private void poweroff() {
System.out.println("断电");
}
public void shutDown() {
this.saveData();
this.killProcess();
this.closeScreen();
this.poweroff();
}
}
class Person {
private Computer c = new Computer();
public void shutdownComputer() {
c.shutDown();
}
}
- 此时把细节都封装起来了,只需要提供一个方法,其余的交给哪个方法操作就可以了.