来自http://www.blogjava.net/xiaosilent/archive/2006/10/25/77184.aspx
实例图


Facade
模式给我们一个普遍的使用方法。在本模式中的 Facade 类的实质就是我们为客户端创建新的接口,而不是去继续使用原有的接口。我们可以这样做,是因为我们不需要使用原始系统中的所有方法。

Facade 模式还可以用来隐藏或封装原来的系统。 Facade 类可以把原来的系统当成私有变量。这样,原始系统就仅仅和 Facade 类有联系而不会暴露给 Facade 类的使用者。

正如下面将要提到的,我们有很多理由来封装系统:

l          追踪系统使用 -通过限制所有对系统功能的调用必须由 Facade 类来完成,我们可以非常方便地监视系统使用状况。

l          在系统间进行切换 -有可能在将来我们所使用的系统会有所改变。通过把原始系统当成 Facade 类的私有成员变量 (private member) 来处理,我们可以很轻易的切换我们所使用的系统。当然,也许仍然有巨大的工作量,但是至少,我只需要改变一个地方 (Facade )

总结

外观模式 (Facade Pattern) 名称的得来是因为她在原始系统的前面建立了一个新的接口 (Facade )

我们将在以下的情况中使用到 Facade 模式:

l          当不需要使用一个复杂系统的所有功能时。创建一个类来包含所有使用这个系统的规则、方法。通常,我们会用到一个原始系统的子系统,新创建的类的接口 (API) 将会比原始系统的接口 (API) 简单得多。

l          当想要封装或隐藏原始系统时。

l          当想要使用原始系统的某些功能并添加新功能时。

l          当编写新类的花费要低于项目组每个人都学习如何使用原始系统或者低于在后期维护时的投入的时候。


这个模式我一开始看还以为是适配器模式,它们之间有什么区别得查一查