Technology-设计模式-外观模式

本文介绍了GoF中的外观模式。

模式推演

当需要简化复杂系统的调用时:

例如我们回到家,希望门自动打开,空调自动打开,电视机也自动打开,我们需要调用三个不同对象的方法,但是其实可以对这一步骤进行简化,用一个接口直接执行这三个功能,而我们只需要调用这一接口即可:

1
2
3
4
5
void reachHome(){
door.open();
airconditioner.on();
tv.on();
}

这种提供统一接口的设计模式称为外观模式,能让客户只跟封装好的接口打交道,减少对象之间的相关依赖关系,从而更便于维护。

OO原则(最少知识):只和你的密友谈话。

遵行最少知识原则的设计标准为:尽可能不要调用从另一个调用中返回的对象的方法。

例如:

1
2
3
4
public float getTemp(){
Thermometer thermometer = station.getThermometer();
return thermometer.getTemperature();
}

应该改成:

1
2
3
public float getTemp(){
return station.getTemperature();
}

定义

外观模式(Facade Pattern):提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

类图:

Technology-DesignPattern-Facade-Class

外观模式与适配器模式的区别在于:外观只是简化接口,客户在有必要的情况下,依然可以使用原来的接口,而适配器是转换接口,客户只能使用适配器的接口。