java23种设计模式(十) -- 外观模式(结构型设计模式)

23种设计模式【Java】全案例解析 具体解析 创建型 结构型 7个原则 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】: 一个类负责一项职责。 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】: 继承与派生的规则。 依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。 接口隔离原则【INTERFACE SEGREGATION PRINC 阅读详情

外观模式

概念介绍

外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。

角色及使用场景

在这里插入图片描述
简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。

  1. 门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。
  2. 子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。
  3. 客户角色:通过调用Facede来完成要实现的功能。

使用场景

  1. 为复杂的模块或子系统提供外界访问的模块;
  2. 子系统相互独立;
  3. 在层析结构中,可以使用外观模式定义系统的每一层的入口。

实例

在这里插入图片描述

children

/**
 * cpu子系统类
 *
 * @author Administrator
 */
@Slf4j
public class Cpu {


    public void start() {
        log.info("cpu is start...");
    }

    public void shutDown() {
        log.info("CPU is shutDown...");
    }

}

/**
 * Disk子系统类
 *
 * @author Administrator
 */
@Slf4j
public class Disk {

    public void start() {
        log.info("Disk is start...");
    }

    public void shutDown() {
        log.info("Disk is shutDown...");
    }
}

/**
 * Memory子系统类
 *
 * @author Administrator
 */
@Slf4j
public class Memory {

    public void start() {
        log.info("Memory is start...");
    }

    public void shutDown() {
        log.info("Memory is shutDown...");
    }
}

facade

/**
 * 门面类(核心)
 * @author Administrator
 *
 */
@Slf4j
public class Computer
{

    private Cpu cpu;
    private Memory memory;
    private Disk disk;
    public Computer()
    {
        cpu = new Cpu();
        memory = new Memory();
        disk = new Disk();
    }
    public void start()
    {
        log.info("Computer start begin");
        cpu.start();
        disk.start();
        memory.start();
        log.info("Computer start end");
    }

    public void shutDown()
    {
        log.info("Computer shutDown begin");
        cpu.shutDown();
        disk.shutDown();
        memory.shutDown();
        log.info("Computer shutDown end...");
    }
}

测试类

@Slf4j
public class ApiTest {

    @Test
    public void testCommand(){
        Computer computer = new Computer();
        computer.start();
        log.info("=================");
        computer.shutDown();
    }

}

在这里插入图片描述

小结

外观模式也叫门面模式,主要解决的是降低调用方的使用接口的复杂逻辑组合。这样调用方与实际的接口提供方提供方提供了一个中间层,用于包装逻辑提供API接口。有些时候外观模式也被用在中间件层,对服务中的通用性复杂逻辑进行中间件层包装,让使用方可以只关心业务开发。

JAVA设计模式总结之23种设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。 阅读详情

相关推荐

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

Java中23种设计模式的详细介绍

Java开发中23种设计模式详细介绍设计模式介绍设计模式分类设计模式六大原则开闭原则(Open Close Principle)里氏代换原则 设计模式介绍 设计模式(Design Patterns): 一套被反复使用,多数人知晓,经过分类编目,代码设计的总结 使用设计模式是为了可重用代码,让代码更容易理解,保证代码可靠性 项目中合理运用设计模式可以完美的解决很多问题,每种模式都有相应的原理...

攻城狮Chova的博客 1万+

解决 TensorFlow 和 Keras 的 Python 版本兼容问题:详细技术指南

本文提供了TensorFlow和Keras与Python版本不兼容问题的完整解决方案。通过版本对照表指出不同TensorFlow版本对应的Python支持范围,强调2.13.x仅支持Python 3.9-3.11,且不兼容Python 3.12+。给出最佳实践建议:使用虚拟环境管理项目依赖,推荐venv或conda创建独立环境;指导正确安装TensorFlow和Keras版本,建议优先使用tf.keras避免冲突;针对常见报错如DLL加载失败、模块导入错误等提供具体解决方法。最后给出一个在兼容环境中运行的M

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1663

Java23种设计模式详解

提供了一种方式来封装一组具有相关联的或相互依赖的对象的创建。一个抽象工厂定义了一个接口,用于创建相关或依赖对象的家族,而实际的具体工厂则负责生成具体的对象。下面是一个使用Java实现的抽象工厂模式的简单示例:假设我们有一个图形应用程序,需要绘制不同类型的形状(如圆形、矩形等)和颜色填充策略(如红色、蓝色等)。每种形状都可以有不同的颜色填充,这就构成了两个相关的对象家族。// 抽象产品接口:形状// 具体产品:圆形@Override// 具体产品:矩形@Override。

2301_76508397的博客 3791

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 608

【23种设计模式】结构型模式详细介绍

本文为 【23种设计模式】结构型模式 相关内容介绍,下边将对适配器模式,桥接模式,组合模式,装饰模式,外观模式,亨元模式,代理模式,具体包括它们的特点与实现等进行详尽介绍~

小新要变强的博客 1417

量产导入 | 产品可靠性测试标准完整大集合(JEDEC/IEC/SAE…)

产品可靠性测试是产品质量保证中的重要一环, 包含有Pre-con, aging(寿命)和ESD(静电)等, 下面就收集了权威标准JEDEC全系列, 请参照如下 同时也附上其它的可靠性标准供大家参考及交叉理解, 可能侧重点不同, 大家可以参考下。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1660

Java设计模式- 结构型设计模式-外观模式

Java设计模式- 结构型设计模式-外观模式

Fatter$hday的博客 1198

目前固态激光雷达在机器人领域的应用难点汇总

固态激光雷达在机器人领域面临性能与成本的双重挑战:探测性能上,动态范围不足(60-80dB)导致高/低反射物体识别困难,近距盲区(30-50cm)与长距精度(±3cm)矛盾突出;结构上视场角与点云密度难以平衡,多雷达拼接又带来同步误差。成本方面,核心元件(SPAD/OPA芯片)良率低(<50%)、校准工序复杂,单机成本超200美元。环境适应性上,粉尘附着、振动偏移(±2°)和光衰(1万小时衰减15%)制约可靠性。

start_up_go的博客 480

代谢组数据分析(三):代谢组降维分析

本文详细介绍了代谢组学中常用的降维分析方法,包括PCA、PLS-DA和OPLS-DA。PCA通过线性变换降低数据维度,便于数据可视化和异常值检测;PLS-DA是一种有监督的模式识别方法,适用于分类和预测;OPLS-DA通过正交分解避免过拟合,更准确地筛选差异代谢物。降维分析在揭示样本间差异和发现生物标志物方面具有重要意义

专注生信领域 3790

【Java 设计模式】结构型之外观模式

外观模式是一种结构型设计模式,它为复杂系统提供了一个简化的接口,隐藏了系统的复杂性,使得客户端更容易使用系统。外观模式通过创建一个包装类(外观类),将系统的复杂性封装起来,对客户端提供一个简单的接口。外观模式通常包含三个主要角色:外观类(Facade)、子系统类(Subsystem)和客户端(Client)。提供了一个简化的接口,封装了对子系统的调用。实现了系统的功能,由外观类调用。调用外观类来简化系统的使用,无需直接与子系统交互。

好久不见的流星 1003

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

23种设计模式介绍以及在Java中的实现

文本详细总结了23种设计模式以及他们如何应用到java中,并提供了大量的示例代码。 文章中的示例源码在github上:https://github.com/anxpp/JavaDesignPattern。 如果本文对您有所帮助,请帮忙点个赞扩散一下,谢谢!

anxpp的博客 4万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式--外观模式(门面模式)【结构型模式】

外观模式也叫门面模式,主要是降低调用方调用子系统接口的复杂性,它提供一个统一的接口,用于调用子系统中的一组接口,在调用方和实际的接口提供方之间提供提供了⼀个中间层,这个中间层用于包装复杂的调用逻辑,降低业务调用的复杂度。

weixin_42118323的博客 1967

23种设计模式之外观模式

23种设计模式之外观模式

weixin_51395608的博客 1510

23种设计模式一外观模式

外观模式通过提供统一接口简化复杂系统交互,其核心价值体现在简化、解耦和封装。文章以电商订单系统为例,展示了库存管理、支付处理、物流配送等多个子系统的实现,并通过OrderProcessingFacade外观类将这些子系统操作封装为统一的下单接口。该模式使客户端无需了解子系统细节,只需调用外观类提供的高层方法即可完成复杂操作,符合迪米特法则,有效降低了系统耦合度。UML类图清晰呈现了客户端、外观类与各子系统间的协作关系,体现了外观模式在复杂业务场景中的实用价值。

J_liaty的博客 1578

全面解读Java的23种设计模式

需要注意的是,混合使用设计模式要谨慎,不要过度使用设计模式,以免代码过于复杂和难以维护。选择合适的设计模式和合适的组合方式,可以使代码更加简洁、高效和易于维护。

weixin_39158966的博客 3265

设计模式(十一)结构型:外观模式详解

外观模式(Facade Pattern)是 GoF 23 种设计模式中的结构型模式之一,其核心价值在于为一个复杂的子系统提供一个统一、简化的高层接口,从而降低客户端与子系统之间的耦合度。

谦与谦寻的神隐 1283

瑞_23种设计模式_外观模式

本文章为瑞_系列专栏之《23种设计模式》的外观模式篇。外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。应用实例:JAVA 的三层开发模式

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1674

Java二十三种设计模式-外观模式(9/23)

外观模式(Facade Pattern)是一种常用的结构型设计模式,其核心目的是为一个复杂的子系统提供一个简化的统一接口。通过外观模式,客户端可以访问一个复杂的类系统,而无需了解该系统内部的复杂性。外观模式提供了一种简化复杂系统访问的方法,使得客户端可以更容易地与复杂的子系统交互。通过本文的深入分析,希望读者能够对外观模式有更全面的理解,并在实际开发中做出合理的设计选择。Java二十三种设计模式-单例模式(1/23)Java二十三种设计模式-工厂方法模式(2/23)

小相探索IT世界 1808

Java23种设计模式——10.结构型模式之外观模式

Java中除去有设计原则之外,还有23中设计模式。 这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。 并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。 那我们今天要学习结构型模式中的外观模式! 外观模式 老样子,百度百科 可能通过这个百度百科的介绍,我们看完还是懵圈中,这个外观模式是主要想解决一个啥事情呢? 我先举一个例子,就是我们办理手续,要知道啊,办理手续流程复杂,而且乱七八糟的,很多人没有办理过,这个是真的费劲...

胖子胖子大胖子的博客 1237

详解设计模式:外观模式

外观模式(Facade Pattern),又称为门面模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。 外观模式 是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。 本篇内容包括:关于外观模式、外观模式实现 Demo

栗筝i的博客 3693

java23种设计模式-外观模式

外观模式提供一个统一的接口来访问子系统中的多个接口。它通过定义一个高层接口简化客户端与复杂子系统的交互。

专注后端开发 1333

GOF23设计模式-结构型(7种)

文章目录二、结构型模式1. 外观模式(门面模式)定义适用场景优点缺点源码外观模式和中介者模式外观模式和单例模式外观模式和抽象工厂模式2. 装饰者模式定义适用场景优点缺点源码装饰者模式和代理模式装饰者和适配器模式3. 适配器模式定义适用场景优点缺点扩展源码适配器模式和外观模式4. 享元模式定义适用场景优点缺点内部状态和外部状态源码享元模式和代理模式享元模式和单例模式5. 组合模式定义适用场景优点缺点...

欧阳惜竹的博客 1109

Java之——23种设计模式汇总

在软件开发的历程中,正是无数前辈们本着追求完美的架构设计和代码设计的初心。经过无数前辈们的探索和努力,逐渐形成了一系列的设计原则和设计模式。 对于Java语言来说,通常包含有6大设计原则和23种设计模式,这些都是前辈们对于开发思想的结晶。我们学习和理解这些设计原则和设计模式,深入掌握其实现原理和使用场景,能够更好的设计我们的系统架构。编写出具有高性能、高并发、高可用、高可扩展性和高可维护性的代码...

冰河的专栏 4351
上一篇: java23种设计模式(九) -- 装饰器模式(结构型设计模式)
下一篇: java23种设计模式(十一) -- 享元模式(结构型设计模式)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值