首页 > 其他分享 >从零玩转设计模式之外观模式-waiguanmos

从零玩转设计模式之外观模式-waiguanmos

时间:2023-05-19 12:13:12浏览次数:33  
标签:外观 接口 模式 waiguanmos 客户端 设计模式 子系统 玩转

title: 从零玩转设计模式之外观模式
date: 2022-12-12 15:49:05.322
updated: 2022-12-23 15:34:40.394
url: https://www.yby6.com/archives/waiguanmos
categories: 
- 设计模式
tags: 
- 设计模式

什么是外观模式

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

需求

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

方法一

一般可能会一个个调用

image-1670832143638

方法二

外观模式

image-1670831914617

定义

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

模式角色

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

UML图

图1

image-1670832336935

图2

image-1670832339908

优缺点

优点

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

缺点

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

适合场景

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

源码当中的应用

springjdbc

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

tomcat源码

image-1670832755010
image-1670832765327

标签:外观,接口,模式,waiguanmos,客户端,设计模式,子系统,玩转
From: https://www.cnblogs.com/Yangbuyi/p/17414759.html

相关文章

  • 从零玩转设计模式-从零玩转设计模式
    title:从零玩转设计模式date:2022-12-0400:14:53.517updated:2022-12-0400:41:09.896url:https://www.yby6.com/archives/从零玩转设计模式categories:tags:一、设计模式概述二、UML三、创建型模式5种四、结构型模式7种五、行为型模式11种六、如何正确使用......
  • 从零玩转前后端加解密之SM2-sm2
    title:从零玩转前后端加解密之SM2date:2022-08-2119:42:00.907updated:2023-03-3013:28:48.866url:https://www.yby6.com/archives/sm2categories:-加密算法-从零玩转系列tags:-加密算法-sm2前言SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密......
  • 从零玩转人脸识别验证-face
    title:从零玩转人脸识别验证date:2022-05-1521:05:52.974updated:2023-05-1600:00:11.594url:https://www.yby6.com/archives/facecategories:-Java分类-从零玩转系列-人脸识别tags:-java-人脸识别前言在线demo(前往享受人脸识别)本期教程人脸识别第......
  • 从零玩转Activiti7工作流-2021-09-12-16-22-07
    title:从零玩转Activiti7工作流date:2021-09-1216:22:08.51updated:2021-12-2617:43:12.171url:https://www.yby6.com/archives/2021-09-12-16-22-07categories:-工作流tags:Activiti讲师:波波​工作流(Workflow),就是通过计算机对业务流程自动化执行......
  • 从零玩转第三方登录之WeChat公众号扫码关注登陆 -wechatgzh
    title:从零玩转第三方登录之WeChat公众号扫码关注登陆date:2022-09-2722:46:53.362updated:2023-03-3013:28:41.359url:https://www.yby6.com/archives/wechatgzhcategories:-从零玩转系列tags:-第三方登录-从零玩转系列前言由于看见了面试鸭的登陆方式,我......
  • 从零玩转第三方登录之WeChat公众号登陆-cong-ling-wan-zhuan-di-san-fang-deng-lu-zhi
    title:从零玩转第三方登录之WeChat公众号登陆date:2022-09-0316:32:57.876updated:2022-09-0316:32:57.876url:https://www.yby6.com/archives/cong-ling-wan-zhuan-di-san-fang-deng-lu-zhi-wechat-gong-zhong-hao-deng-lucategories:tags:前言由于看见了面试鸭......
  • 从零玩转Yaip使用-cong-ling-wan-zhuan-yaip-shi-yong
    title:从零玩转Yaip使用date:2021-07-1615:47:17.624updated:2021-12-2617:43:12.255url:https://www.yby6.com/archives/cong-ling-wan-zhuan-yaip-shi-yongcategories:-apitags:Yaip****使用开发笔记1.什么是yapiYApi是高效、易用、功能强大的api管理平......
  • 从零玩转Websocket实时通讯服务之前后端分离版本-websocket
    title:从零玩转Websocket实时通讯服务之前后端分离版本date:2021-10-2500:47:12.945updated:2021-12-2617:43:10.496url:https://www.yby6.com/archives/websocketcategories:-OSS-mysql-api-单例模式-websokcettags:前言公司项目需要用到消息提示,那么......
  • 从零玩转SpringSecurity+JWT整合前后端分离-从零玩转springsecurityjwt整合前后端分离
    title:从零玩转SpringSecurity+JWT整合前后端分离date:2021-05-0614:56:57.699updated:2021-12-2617:43:19.478url:https://www.yby6.com/archives/从零玩转springsecurityjwt整合前后端分离categories:-Java分类tags:-SpringSecurity-Jwt2021年4月9日·预......
  • 从零玩转Java和word模板-从零玩转java和word模板
    title:从零玩转Java和word模板date:2021-12-2218:38:14.086updated:2021-12-2218:38:14.086url:https://www.yby6.com/archives/从零玩转java和word模板categories:tags:前言公司需要使用生成word模板将Java信息输入到word指定位置......