前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解锁设计模式的神秘面纱:编写无懈可击的代码之外观设计模式

解锁设计模式的神秘面纱:编写无懈可击的代码之外观设计模式

原创
作者头像
杨不易呀
发布2023-09-26 00:07:15
1480
发布2023-09-26 00:07:15
举报
文章被收录于专栏:杨不易呀

前言

设计模式是一种在软件设计中广泛应用的概念,它们代表了解决特定问题或实现特定功能的经验性最佳实践和通用解决方案。设计模式是经过反复验证和测试的,可以帮助开发人员更有效地解决常见的设计问题,提高代码的可维护性、可扩展性和可重用性。

设计模式可以分为三个主要类别:创建型、结构型和行为型。创建型设计模式关注对象的创建机制,结构型设计模式关注类和对象的组合方式,而行为型设计模式关注对象之间的通信和协作方式。在这些类别中,存在许多常见的设计模式.

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

什么是外观模式

外观模式是一种软件设计模式,它提供了一种将多个子系统包装在一个更高级别的接口中的方法,这样客户端就可以通过这个接口来访问这些子系统中的各个功能。外观模式的主要目的是通过简化系统的接口,降低客户端的复杂度,同时也可以隐藏子系统之间的复杂依赖关系。

需求

  1. 进入公司职
    • 行政接待
      • 每一个都是单独子系统
    • 拍照
      • 单独子系统
    • hr办理入职
      • 单独子系统

方法一

一般可能会一个个调用

image-1670832143638
image-1670832143638

方法二

外观模式

image-1670831914617
image-1670831914617

定义

又叫门面模式,为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。

外观模式将一个或者数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观。

通过实现一个提供更合理的接口的外观类,你可以将一个复杂的子系统变的更加容易使用。

外观模式不只是简化了接口,也将客户从组件的子系统中解耦。

模式角色

SubSystem:子系统角色

Facade:外观角色

Client:客户端角色

UML图

图1

image-1670832336935
image-1670832336935

图2

image-1670832339908
image-1670832339908

优缺点

优点

降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。

对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。

缺点

不能很好地限制客户使用子系统类,很容易带来未知风险。

增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”

适合场景

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

源码当中的应用

springjdbc

  • JdbcUtils 对java.sql中的connection进行封装
    image-1670832657931
    image-1670832657931

tomcat源码

image-1670832755010
image-1670832755010
image-1670832765327
image-1670832765327

最后

本期结束咱们下次再见👋~

点赞
点赞

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 什么是外观模式
    • 需求
      • 方法一
        • 方法二
          • 定义
            • 模式角色
              • UML图
                • 优缺点
                  • 优点
                  • 缺点
                • 适合场景
                  • 源码当中的应用
                    • springjdbc
                    • tomcat源码
                • 最后
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档