设计模式之外观模式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本篇文章是设计模式专题的第十二篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲外观模式,也叫门面模式。

外观模式的简单介绍

外观模式又叫做门面模式,它是为了解决多个复杂子系统无法对外提供一致性服务的一种设计模式,及多种复杂的实现对外保持统一的调用接口。

外观模式最大的特点就是隐藏系统的复杂性。

外观模式的类图:

image.png

外观模式中各个角色的介绍:

  • 门面:为多个子系统的访问提供统一的接口
  • 子系统:实现系统的部分功能,通过门面调用子系统

外观模式的具体实现思路

  • 创建子系统
  • 创建门面,在门面中实例化子系统,通过门面调用子系统的功能

外观模式的具体实现方案

// 子系统
public class SubSystemA {
    public void method() {
        System.out.println("子系统A的方法被调用!");
    }
}
// 子系统
public class SubSystemB {
    public void method() {
        System.out.println("子系统B的方法被调用!");
    }
}
// 子系统
public class SubSystemC {
    public void method() {
        System.out.println("子系统C的方法被调用!");
    }
}
// 门面
public class Facade {
    private SubSystemA subSystemA;
    private SubSystemB subSystemB;
    private SubSystemC subSystemC;
    
    public Facade() {
        this.subSystemA = new SubSystemA();
        this.subSystemB = new SubSystemB();
        this.subSystemC = new SubSystemC();
    }
    
    public void method() {
        subSystemA.method();
        subSystemB.method();
        subSystemC.method();
    }
}
AI 代码解读

外观模式的优缺点

优点

  • 减少系统相互依赖
  • 提高灵活性
  • 让系统的易用性更强
  • 提高了安全性

缺点

  • 不符合开闭原则,如果要改东西很麻烦,继承重写都不合适

外观模式的适用场景

  1. 为复杂的模块或子系统提供外界访问的模块。
  2. 多个子系统相对独立。
  3. 当客户端与多个子系统之间存在很大的联系时,通过外观模式可将它们解耦,从而提高子系统的独立性和可移植性。

外观模式总结

外观模式的设计思路就是利用一个中间对象进行客户端与子系统的解耦,这种设计思想也常常被我们用到。外观模式最经典的一种用法就是日志门面,在阿里规约上也强调应用中不可以直接使用日志系统(Log4j,LogBack)中的API,而应该依赖于使用日志门面框架SLF4J中的API,这样有助于维护各个类中日志处理方式的统一,由此可见门面模式的作用及其重要性。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
1
分享
相关文章
【设计模式】【结构型模式】外观模式(Facde)
一、入门 什么是外观模式? 一种结构型设计模式,通过为子系统中的一组接口提供一个统一的高层接口(称为外观),来简化客户端与复杂子系统的交互过程。其本质是建立抽象层来隔离复杂度。 为什么要有外观模式?
84 9
「全网最细 + 实战源码案例」设计模式——外观模式
外观模式(Facade Pattern)是一种结构型设计模式,旨在为复杂的子系统提供一个统一且简化的接口。通过封装多个子系统的复杂性,外观模式使外部调用更加简单、易用。例如,在智能家居系统中,外观类可以同时控制空调、灯光和电视的开关,而用户只需发出一个指令即可。
180 69
Java设计模式之外观模式
这篇文章详细解释了Java设计模式之外观模式的原理及其应用场景,并通过具体代码示例展示了如何通过外观模式简化子系统的使用。
101 0
Java设计模式-外观模式(11)
Java设计模式-外观模式(11)
【九】设计模式~~~结构型模式~~~外观模式(Java)
文章详细介绍了外观模式(Facade Pattern),这是一种对象结构型模式,通过引入一个外观类来简化客户端与多个子系统之间的交互,降低系统的耦合度,并提供一个统一的高层接口来使用子系统。通过文件加密模块的实例,展示了外观模式的动机、定义、结构、优点、缺点以及适用场景,并讨论了如何通过引入抽象外观类来提高系统的可扩展性。
【九】设计模式~~~结构型模式~~~外观模式(Java)
设计模式第七讲-外观模式、适配器模式、模板方法模式详解
系统要求所有的数据库帮助类必须实现ISqlHelp接口,面向该接口编程,如SQLServerHelp类。 此时第三方提供了一个新的MySql的帮助类(假设是dll,不能修改),它的编程规范和ISqlHelp不兼容,这个时候就需要引入适配器类,使二者能相互兼容。
218 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问