您的位置:首页 > 其它

设计模式-最少知识原则

2017-11-04 20:46 274 查看
当你正在设计一个系统,不管是任何对象,你都要注意它所交互的类有哪些,并注意它和这些类是如何交互的。

最少知识原则希望我们在设计中,不要让太多的类耦合在一起,以免修改系统中的一部分,会影响到其他部分。如果许多类之间相互依赖,那么这个系统就会变成一个易碎的系统,它需要花很多成本维护,也会因为太复杂而不容易被其他人了解。

下面看一句不太好的代码:(从气象站取得温度计对象,然后再从温度计对象去的温度)

public float getTemp(){
return station.getThermometer().getTemperature();
}

依赖的类过多,究竟怎样才能避免这样呢?最少知识原则提供了一些方针:

就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:

1)该对象本身

2)被当做方法的参数而传递进来的对象

3)此方法所创建或实例化的任何对象

4)对象的任何组件

请注意!!!前3条的意思是,如果某对象是调用其他方法的返回结果,不要调用该对象的方法!第4条中的组件可以想象成被实例变量所引用的任何对象。

按着这些方针修改上面的代码:(减少当前类所依赖的数目)

public float getTemp(){
return station.getTemperature();
}
这需要在气象站中加进一个方法,用来向温度计请求温度。

采用最少知识原则的优点:减少对象的依赖,这会减少软件的维护成本。

缺点:会导致更多的包装类被制造出来,用来处理和其他组件的沟通,这可能会导致复杂度和开发时间的增加,并降低运行时的性能。

所以,所有的原则都应该在有帮助的时候才遵守。所有的设计都不免需要折衷,即在抽象和速度之间取舍,在空间和时间之间平衡。

在采用原则之前,必须全盘考虑所有的因素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: