门面模式
门面模式又叫外观模式。外部与一个子系统通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的借口,使子系统更易于使用。
1.结构
门面系统没有一般化的结构,但是每个门面系统至少都含有两个重要角色:门面角色和系统角色。
- 门面角色(Facade):
与客户端通信的角色。门面角色知晓相关子系统的功能和责任。农场客户端的请求被门面角色委派到相应的子系统当中。门面角色通常是一个单利类。一个系统中有多个子系统,每个子系统可以有一个门面类。
- 子系统角色(Subsystem):
可以同时有一个或多个子系统,每个子系统都不是单独的类,而是一个类的集合。每个子系统欧可以被客户端直接调用或者门面角色调用。子系统不知道门面角色的存在,对子系统而言,门面角色是另外的一个客户端。
这里的“子系统”并非是一定是项目结构中的系统,可以理解为系统中的模块。例如订单系统包含订单信息模块(子系统)、商品信息模块(子系统)、售后服务信息模块(子系统)等。
2.例子:
不使用门面模式:
使用门面模式:
3.小结
门面模式是对客户端的松耦合,将客户端使用到的多个对象抽象到一个门面类中,从而将客户端请求由门面类委派到子系统中。