门面(Facade)模式
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。
门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式的门面类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道。
门面模式有三个角色组成:
1)门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。
2)子系统角色:实现了子系统的功能。对它而言, façade 角色就和客户角色一样是未知的,它没有任何 façade 角色的信息和链接。
3)客户角色:调用 façade 角色来完成要得到的功能。
代码结构:
在什么情况下使用门面模式
- 为一个复杂子系统提供一个简单接口
- 提高子系统的独立性
- 在层次化结构中,可以使用Facade模式定义系统中每一层的入口。