外观模式可以说是设计模式中很简单的一个模式了,当你有一个很复杂的系统,完成一个动作时需要调用多个接口时,就可以新定义一个接口,在这个接口里调用多个接口,这样一来对外就只用调用一个接口,而不是对外让别人调用多个接口。
我想就算没学习这个模式,在实际中我们自己也会这样做。这个模式的优点可不只是简化接口这么简单。它能将客户从一个复杂的子系统中解耦。
说到外观模式,这里要提到一个原则----“最少知识原则”(Least Knowledge),这个原则告诉我们,要减少对象之间的交互,只留下几个密友。不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他部分。
一个简单的例子
Public float getTemp() { // 获取温度计 Thermometer thermometer = station.getThermometer(); // 获取温度 return thermometer.getTemperature(); }
上面这段代码没有遵循最少知识原则。这里调用了另一个调用中(getThermometer)返回对象(thermometer)的方法(getTemperature)。应该在station类里加上获取温度方法。修改后如下
Public float getTemp() { // 获取温度 return station.getTemperature(); }
这样一来这个方法里依赖的对象只有station。