最少知识原则-headfirst

最少知识原则

先看一段错误例子,这段代码耦合了多少类

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个小原则

  1. 该对象本身
  2. 方法参数传入对象
  3. 方法内实例的对象
  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为当前结果对象

你可能感兴趣的:(设计模式)