意图:为了子系统中的一组接口提供一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。希望能够简化现有系统的使用方法,需要定义自己的接口。
问题:只需要使用一个复杂系统的一个子集,或者,需要一种特殊的方式与系统交互。
解决方案:Façade向客户展现使用现有系统的一个新的接口。
参与者与协作者:向客户展现一个定制的接口,让客户更容易地使用现有系统。
效果:该模式简化了对所需子系统的使用。由于该模式并不完整,因此有些功能对于客户可能是不可用的。
实现:定义一个或一组新的类来提供所需要的接口;让新的类使用现有的系统。
适用范围:
(1)不需要适用一个复杂系统的所有功能,并且可用创建一个新的类来包容访问原有系统所适用的所有规则。如果你创建的API是原始系统接口的一个子集,通常它就是比原始系统的API简单很多。
(2)希望包装或隐藏原有系统。
(3)希望适用原有系统的功能,并且增加一些新的功能。
(4)“编写一个新的类”的代价小于“让所有人学会使用原有系统”或“在未来维护着呢规格系统”所需的代价。