设计模式(八)_门面模式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 今天一看日期,我擦,已经7月中旬了,抓紧时间学习起来。这个月要把设计模式结束掉,因为需要学习的东西太多了为什么今天学习这个模式呢,因为最近在看log4j2,然后看到了阿里规约中有关日志的规约中写到:应用中不可直接使用日志系统 (Log 4 j 、 Logback) 中的 API ,而应依赖使用日志框架SLF 4 J 中的 API ,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

今天一看日期,我擦,已经7月中旬了,抓紧时间学习起来。这个月要把设计模式结束掉,因为需要学习的东西太多了

为什么今天学习这个模式呢,因为最近在看log4j2,然后看到了阿里规约中有关日志的规约中写到:

应用中不可直接使用日志系统 (Log 4 j 、 Logback) 中的 API ,而应依赖使用日志框架
SLF 4 J 中的 API ,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

概念

门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用

门面模式有的地方也称为外观模式

例子

看了上面概念,我想门面模式应该这个样子,以日志系统为例

image

咱们再找找其他人如何表示的
image

不得不佩服大牛,不仅技术强,画图也比我画的好!咱们还是先从简单的例子中理解下,路要一步一步走的。这篇主要以门面模式为主


代码示例

找个简单的例子,这个例子很形象,保证你看了之后绝对能记住

身为程序员,第一件事情就是来了开电脑,只要按下开机键。其实电脑内部实际上也启动了多个模块,如cpu、硬盘、内存等等

image

开机键就是一个很好的门面,让程序员无需了解cpu,内存和硬盘如何启动。


public class Cpu {
    
    public void start() {
        System.out.println("cpu启动了");
    }

}

public class Disk {
    
    public void start() {
        System.out.println("硬盘启动了");
    }
}

public class Memory {
    
    public void start() {
        System.out.println("内存启动了");
    }

}

如果没有开机键,我们需要这么做:

        new Cpu().start();
        new Disk().start();
        new Memory().start();
        

有了开机键,这些操作都交给开机键去做

public class StartBtn {
    
    public void start() {
        new Cpu().start();
        new Disk().start();
        new Memory().start();
    }

}

我们只需要

new StartBtn().start();

门面模式不仅为我们提供了一个简单方便的接口,也让我们的系统和子系统解耦。

总结

门面模式主要使用场景:

  • 包装多个复杂的子系统,提供一个简单的接口
  • 重新包装系统,隐藏不想暴露的接口

优缺点

将复杂的接口简单化,减少了客户端与接口之间的耦合,提高了安全性。可能产生大量的中间类(门面类),一定程度上增加了系统的复杂度

学习不是要么0分,要么100分的。80分是收获;60分是收获;20分也是收获。有收获最重要。但是因为着眼于自己的不完美,最终放弃了,那就是彻底的0分了。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
设计模式 算法
设计模式7 - 门面模式【Facade Pattern】
设计模式7 - 门面模式【Facade Pattern】
58 1
|
设计模式 算法 C++
设计模式之门面模式(C++)
设计模式之门面模式(C++)
|
6月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
59 1
|
6月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
45 0
|
6月前
|
设计模式 传感器
将设计模式门面模式运用到生活当中
将设计模式门面模式运用到生活当中
|
设计模式
设计模式系列教程(10) - 外观模式(门面模式)
设计模式系列教程(10) - 外观模式(门面模式)
94 0
|
设计模式 Java
设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式(Fac
54 0
|
设计模式
设计模式~门面模式-05
门面模式 优点 缺点 使用场景
44 0
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
67 0
|
设计模式 Python
Python:设计模式之门面模式
Python:设计模式之门面模式
89 0

热门文章

最新文章

  • 1
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    44
  • 2
    C++一分钟之-C++中的设计模式:单例模式
    51
  • 3
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    36
  • 4
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    59
  • 5
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    54
  • 6
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    39
  • 7
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    49
  • 8
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    102
  • 9
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    74
  • 10
    Go语言设计模式:使用Option模式简化类的初始化
    71