最少知识原则
先看一段错误例子,这段代码耦合了多少类
public float getTemp() {
return station.getThermometer().getTemperature();
}
其中,station.getThermometer()返回时一个对象,然getTemperature()是前者返回对象的方法,这里属于耦合
错误改进,实际上与上一致
public float getTemp() {
Thermometer thermometer = station.getThermometer();
return thermometer.getTemperature();
}
正确改进
public float getTemp() {
return station.getThermometer();
}
在对象方法内,我们允许调用哪些对象的方法
简单理解为以下4个小原则
- 该对象本身
- 方法参数传入对象
- 方法内实例的对象
- 对象组件
正确例子对应代码,允许调用的方法
package headfirst.hd.facade.eg.error;
public class Car {
Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void start(Key key) {
Doors doors = new Doors();
boolean anthorized = key.turn(); //[2]方法参数传入对象
if (anthorized) {
engine.start(); //[4]对象组件
updateDisplay(); //[1]该对象本身
doors.lock(); //[3]方法内实例的对象
}
}
//更新显示
public void updateDisplay() {
// TODO Auto-generated method stub
}
}
尽量尊重以上四条原则就可以了
java设计中,违背最少知识原则举列子
System.out.println();
其中System.out为当前结果对象