意图:希望简化原来系统的使用方式。需要定义自己的接口。
问题:只需要使用某个复杂系统的子集,或者,需要以一种特殊的方式与系统交互。
解决方案:Facade为原有系统的客户提供了一个新的接口。
参与者与协作者:为客户提供的一个简化接口,使系统更容易使用。
效果:Facade模式简化了对所需子系统的使用过程。但是,由于Facade并不完整,因此客户可能无法使用某些功能。
实现:定义一个(或多个)具备所需接口的新类;让新的类使用原有的系统。
结构图:
适合场合:
1. 不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能(这是通常的情况),那么你为新类所创建的API新比原系统的API简单得多。
2. 希望封装或者隐藏原系统。
3. 希望使用原系统的功能,而且还希望增加一些新的功能。
4. 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。
摘自《设计模式解析》(第2版) 第6章
Tags: 设计模式