属于结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。(提供一个统一的接口,来访问子系统中的一群接口)
适用场景:
- 系统越来越复杂,增加外观模式提供简单调用接口
- 构建多层系统结构,利用外观对象作为每层入口,简化层间调用
优点:
- 简化调用过程,无需了解子系统,防止带来风险
- 减少系统依赖、松散耦合
- 更好划分访问层次
- 符合最少知道原则
缺点:
- 增加子系统、扩展子系统行为时容易引入风险
- 在进行以上行为时,不符合开闭原则
相关设计模式:
- 与中介者模式
- 与单例模式
- 与抽象工厂模式
业务功能变化少的比较适合实体外观类;相反,变化很多的适用抽象外观类。
源码:
springboot——jdbcUtil,mybaits——Configuration,tomcat——requestfacade,standardSessionfacade等
一、门面模式结构

角色:
- 门面角色:客户端可以调用这个角色方法,此角色知晓相关的子系统的功能和责任,正常情况下,本角色会将所有从客户端发来的请求委派到相应子系统。
- 子系统角色:每个子系统可以被客户端调用,或者被门面角色调用。
二、门面模式实现
1.一个系统可以有几个门面类
2.不能通过门面模式为子系统增加新行为
三、在什么情况下使用门面模式
1.为一个复杂子系统提供一个简单接口
2.提供子系统的独立性
3.层次化结构
网友评论