门面模式

前言

门面模式也是结构型模式的一种。这里要注意一下和代码模式的区别,门面模式可能代理的是多个接口,而代理模式一般只是代理某一个接口。安全

目录

1、定义

门面模式有时候会被称为外观模式,是一种比较经常使用的封装模式。markdown

要求一个子系统的外部与其内部的通讯必须经过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更易于使用。架构

门面模式注重 “统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不容许有任何访问子系统的行为发生。框架

2、模式原理分析

当咱们须要用更统一的标准方式来与系统交互时,就能够采用门面模式。好比,使用 Slf4j 日志框架来统一 log4jlog4j2CommonLog 等日志框架。再好比,在支付时经过扫描二维码来使用支付系统。对于用户来讲,他们并不关心后台系统实现有多么复杂,只关心最终可否支付成功。this

//子系统
public class ClassA{
    public void doSomeThing(){
        
    }
}
public class ClassB{
    public void doSomeThing(){
        
    }
}
public class ClassC{
    public void doSomeThing(){
        
    }
}
//门面系统
public class Facade{
    //被委托的对象
    private ClassA a = new ClassA();
    private ClassB b = new ClassB();
    private ClassC c = new ClassC();
    //提供给外部访问的方法
    public void methodA(){
        this.a.doSomeThingA();
    }
    public void methodB(){
        this.b.doSomeThingB();
    }
    public void methodC(){
        this.c.doSomeThingC();
    }
}
复制代码

3、使用场景

  • 为一个复杂的模块或子系统提供一个供外界访问的接口,减小客户端处理的系统数量spa

  • 预防低水平人员带来的风险扩散代理

  • 为了解决遗留系统重构的问题日志

  • 为了解决分层架构中的扩展问题code

4、优势

  • 减小系统的相互依赖,阻止外部访问直接深刻到子系统内部orm

  • 提升了灵活性,无论子系统内部如何变化,只要不影响门面系统就好

  • 提升安全性,子系统入口只有一个。

5、缺点

  • 不符合开闭原则,并且门面系统不能轻易更改

  • 下降了可靠性,门面系统挂了,全部子系统功能都将不可用

相关文章
相关标签/搜索