什么是最小知识原则
最小知识原则就是在设计代码的时候,注意减少对象之间的交互,只和满足条件的对象进行交互。
最小知识原则的特点
1 最小知识原则与德墨忒尔法则的关系?
答 :其实这两个名词指的是同一个原则,但是我们更倾向于使用最小知识原则称呼,原因有两个,(1)这个名字更直接。(2)法则给人的感觉是强制,事实上没有任何原则是法律。
2 最小知识原则有哪些缺点?
答:虽然这个原则减少了对象之间的依赖,但是会导致使用更多的包装类,可能导致时间复杂度和空间复杂度的增加,降低运行中的性能。
最小知识原则的条件
对于任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法
- 该对象本身
- 被当做对象本身方法的参数而传递进来的对象
- 此方法所创建或实例化的任何对象
- 对象的任何组件
这样看是有点懵逼,下面通过例子说明
public class TestDemo2 {
// 4 对象的组件
private light = new Light();
public TestDemo2() {
}
public String getName(){
return "测试dmo";
}
public void demo(Door door){
// 3此方法所创建或实例化的任何对象
AirCondition airCondition = new AirCondition();
airCondition.on();
// 4 对象的组件的方法
light.on();
// 2 被当做对象本身方法的参数而传递进来的对象
door.on();
// 1. 对象本身的方法
System.out.println(this.getName());
}
}