外观模式详解

server/2025/1/9 7:11:37/

外观模式(Facade Pattern)是一种结构型设计模式,其核心目的是为复杂系统提供一个简化的接口,帮助客户端代码与系统的子系统进行交互,同时还可以省略大量的细节。以下是外观模式的详细解释:
定义
外观模式提供了一个统一的接口来访问子系统中的一组接口,隐藏了系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
角色组成
•  外观(Facade)角色:为多个子系统对外提供一个共同的接口,负责协调子系统的调用。
•  子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。
•  客户(Client)角色:通过一个外观角色访问各个子系统的功能。
优点
•  简化了调用过程:无需了解深入子系统,防止带来风险。
•  减少系统依赖、松散耦合:客户端与子系统之间通过外观解耦,客户端只需要与外观类交互,降低了客户端与子系统之间的依赖性。
•  更好的划分访问层次:符合迪米特法则,即最少知道原则。
•  降低复杂性:屏蔽子系统的实现细节,提供简单接口。
•  更易维护:减少直接依赖,增强系统的可维护性。
缺点
•  增加子系统、扩展子系统行为容易引入风险:如果需要新增或者修改子系统的功能,可能需要修改外观类。
•  不符合开闭原则:当子系统很复杂且分散,或者子系统之间的交互方式频繁变化,使用外观模式可能导致外观类变得庞大且复杂。
•  不完全封装:若客户端仍直接调用子系统,外观的效果会减弱。
•  职责单一性可能被破坏:外观可能成为“大接口”,过于复杂。
应用场景
•  简化复杂系统访问:当一个系统包含许多复杂的子系统时,外观模式可以提供一个简单的入口。
•  分层架构中的层间解耦:在分层架构中,业务逻辑层可以作为数据访问层的外观。
•  生活场景:例如医院接待人员简化了挂号、门诊、划价、取药等复杂流程。
•  智能家居控制:智能家居系统包含灯光、空调和安防模块,外观模式可提供一个统一的接口,如“回家模式”,一键控制所有子系统。
外观模式通过提供一个高层的接口,使得客户端代码可以更加容易地与复杂系统交互,而不需要深入了解系统的内部实现细节。这种模式在软件架构中非常实用,尤其是在需要简化客户端与复杂系统之间的交互时。

 


http://www.ppmy.cn/server/156581.html

相关文章

卡尔曼滤波(Kalman Filter) 从理论到实战详解 附算法源码

目录 一、卡尔曼滤波的引入 二、状态观测器 三、最优状态估计 四、最优状态估计算法和方程 五、热成像仪使用卡尔曼滤波器案例 一、卡尔曼滤波的引入 卡尔曼滤波用于优化估算我们感兴趣的量,当这些量无法直接测量但可以间接测量的时候,他们还用于估…

《小型支付商城系统》项目(一)DDD架构入门

目录 1.DDD架构 1.1充血模型 1.2领域模型 1.2.1实体 1.2.2值对象 1.2.3聚合 1.2.4领域服务 1.2.5工厂 1.2.6仓储(Repository) 2.DDD建模 3.DDD工程模型 项目介绍:知识星球 | 深度连接铁杆粉丝,运营高品质社群&#xff…

Infineon PSoC 4 CapSense ModusToolbox IDE - 系统生态篇

本文档说明了 ModusToolbox 软体环境的 4 个层面,该环境为 CapSense 设备和生态系统提供支援。本文是 Infineon PSoC 4 CapSense ModusToolbox IDE-系统介绍的延伸篇 (Infineon PSoC 4 CapSense ModusToolbox IDE -系统介绍篇 - 大大通(简体站))。 什么是ModusToolb…

【设计模式-2】23 种设计模式的分类和功能

在软件工程领域,设计模式是解决常见设计问题的经典方案。1994 年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(四人帮,GoF)在《设计模式:可复用面向对象软件的基础》一书中系统性地总结了…

了解 C# 中的字体别名问题

混叠是图形程序用来提供更平滑结果的过程。字体混叠就是应用于字体的过程。 当您使用Graphics对象的DrawString方法绘制文本时,您可以设置其TextRenderingHint属性来告诉它在绘制文本时使用什么方法。通常, AntiAliasGridFit值可以高效地产生不错的结果。…

计算效率提升 10 倍,存储成本降低 60%,灵犀科技基于 Apache Doris 建设统一数据服务平台

导读:灵犀科技早期基于 Hadoop 构建大数据平台,在战略调整和需求的持续扩增下,数据处理效率、查询性能、资源成本问题随之出现。为此,引入 Apache Doris 替换了复杂技术栈,升级为集存储、加工、服务为一体的统一架构&a…

STM32 I2C通信外设

单片机学习! 目录 前言 一、I2C外设简介 1.1 硬件I2C外设 1.2 硬件I2C功能 1.2.1 多主机模型 1.2.2 7位地址和10位地址的模式 1.2.3 通讯速度 1.2.4 支持DMA 1.2.5 兼容SMBus协议 1.2.6 芯片型号资源 二、I2C框图 2.1 引脚 2.2 SDA数据控制 2.3 SCL时…

在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器

文章目录 1. 打开终端2. 使用 SSH 命令连接服务器3. 输入密码4. 连接成功5. 使用密钥登录(可选)6. 退出 SSH 连接7. 其他常用 SSH 选项8. 常见问题排查问题 1:连接超时问题 2:权限被拒绝(Permission denied&#xff09…