设计模式原则之最小知识原则

最小知识原则,Principle of Least Knowledge

这个原则告诉我们,在方法中,只能调用以下对象的方法:

1、对象本身

2、作为参数传递给此方法的对象

3、在此方法中创建的对象

4、对象的组件

下面这个例子,注释分别对应上面的标号对象

public class car {

    Engine engine;

    public void start(Key key){

        Doors door = new Doors();

        boolean authorized = key.turns();   // 2

        if(authorized){

            engine.start();                             // 4

            updateDashboardDisplay();        // 1

            doors.lock();                                // 3

        }

    }

    public void updateDashboardDisplay(){       

    }

}

注意:不要调用其他方法返回的对象的方法。

/**

* 不符合最小知识原则

*/

public House {

    WeatherStation station;

    public float getTemp() {

        return station.getThermometer().getTemperature();

    }

}

/**

*  符合最小知识原则

*/

public House() {

    WeatherStation station;

    public float getTemp() {

        Thermometer thermometer = station.getThermometer();

        return getTempHelper(thermometer);

    }

    public float getTempHelper(Thermometer thermometer ) {

        return thermometer.getTemperature();

    }

}

最小知识原则的利弊

利:减少对象之间的依赖,维护性提高

弊:增加类的复杂度和开发时间,降低运行效率

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • 果然是“吃在文来,死在上宝”啊!
    杰西卡武阅读 1,833评论 1 0
  • 今天我读了《学习之道》第三章:学习即创造 总体感受: 之前看大家关于专注模式和发散模式的讨论,我倒是产生了一些对于...
    嘿嘿皮卡秋阅读 3,003评论 0 1
  • 风落老城一座,一曲悠扬 碎花啼啼泣,雪满一夜枯城 城门外一步江湖,少年莫愁 少年一夜白头,白了一夜头 风廻雪舞,她...
    金三水先生阅读 2,515评论 2 4
  • 文|磁性泥巴 念婆 小巷深处弥漫着一股烟香,又是一年清明,天色稍晚,街头巷尾地上都燃烧着冥钱堆,空中几点火光,一把...
    磁性泥巴阅读 3,382评论 0 3