外观模式

需求

🐤进入公司入职

  • 行政接待:每一个都是一个单独的子系统
  • 拍照:单独的子系统
  • HR 办理入职:单独的子系统

实现方法 1

外观设计模式

定义

  • 又叫门面模式,为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问
  • 外观模式将一个或者数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观
  • 通过实现一个提供更合理的接口的外观类,你可以将一个复杂的子系统变的更加容易使用
  • 外观模式不只是简化了接口,也将客户从组件的子系统中解耦

模式角色

  • SubSystem:子系统角色
  • Facade:外观角色
  • Client:客户端角色

UML 图

优缺点

优点

  • 降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类
  • 对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易

缺点

  • 不能很好地限制客户使用子系统类,很容易带来未知风险
  • 增加新的子系统可能需要修改外观类或客户端的源代码,违背了 “开闭原则”

适合场景

  • 想要为复杂的子系统提供简单的接口
  • 在客户端和抽象的实现类中存在许多依赖关系
  • 想要对子系统进行分层
  • 设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式
  • 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口
  • 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互

源码中的应用

SpringJDBC

  • JdbcUtils:对 java.sql 中的 connection 进行封装

Tomcat

posted @   BNTang  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示