java面试(企业场景)

设计模式

工厂方法模式

简单工厂模式

简单工厂包括以下角色:

  1. 抽象产品:定义了产品的规范,描述了产品的主要特性和功能
  2. 具体产品:实现或者继承抽象产品的子类
  3. 具体工厂:提供了创建产品的机会,调用者通过该方法来获取产品

工厂方法模式

工厂方法模式的主要角色:

  1. 抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品
  2. 具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建
  3. 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能
  4. 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应
    在这里插入图片描述
    在这里插入图片描述
    优点:
    1. 用户只需要知道具体工厂的名称就可以得到所要的产品,无需知道产品的具体创建过程
    2. 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无需对原工厂进行任何修改,满足开闭原则
      缺点:
    3. 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,增加了系统的复杂度

抽象工厂模式

工厂方法模式只考虑生产同等级的产品,抽象工厂可以处理多等级产品的生产
在这里插入图片描述
产品族:一个品牌下面的所有产品;例如华为下面的电脑,手机称为华为的产品族
产品等级:多个品牌下面的同种产品;例如华为和小米都有手机电脑为同一个等级

抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象方法工厂可生产多个等级的产品。一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂

优点:当一个产品族中的多个对象被设计成一起工作时,他能保证客户端始终只能使用同一个产品族中的对象
缺点:当产品族中需要增加一个新的单品时,所有的工厂类都需要进行修改

策略模式

  1. 该模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响使用算法的客户
  2. 他通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理

策略模式的主要角色

  1. 抽象策略(Stateegy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口
  2. 具体策略(Concrete Strategy)类:实现了抽象策略定义的最终接口,提供具体的算法实现或行为
  3. 环境(Context)类:持有一个策略类的引用,最终给客户端调用
    在这里插入图片描述
    优点:
    1. 策略类之间可以自由切换
    2. 易于扩展
    3. 避免使用多重条件语句(if else),充分体现面对对象的设计思想
      缺点:
    4. 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
    5. 策略模式将造成产生很多策略类

责任链设计模式

责任链模式:为了避免请求发送者与多个请求处理这耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,知道有对象处理它为止

  1. 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后续连接
  2. 具体处理者(Concrete Handler)角色:实现抽象处理者的具体方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给他的后继者
  3. 客户端(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,他不关心处理细节和请求的传递过程

责任链优缺点

优点:
1. 降低了对象之间的耦合度
2. 增强了系统的可扩展性
3. 增强了给对象指派职责的灵活性
4. 责任链简化了对象之间的连接
5. 责任分担
缺点:
1. 对比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响
2. 职责链建立的合理性要靠客户端来保证,增加了客户端的复杂性,可能会由于职责链的错误设置而导致系统出错,如可能会造成循环调用

单点登录

单点登录的英文名叫做:Single Sign On(SSO),只需要登录一次,就可以访问所有信任的应用系统

JWT解决单点登录

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/718560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 C# 学习面向对象编程:第 8 部分

抽象方法 亲爱的读者,本文是 OOP 的第四大支柱,也是最后一大支柱。对于 OOP 初学者来说,这很容易让人困惑。因此,我们用非常简单的语言提供了一个示例。 “抽象用于管理复杂性。无法创建抽象类的对象。抽象类用于继承。” 例如…

pytest并发执行时token异常处理问题

接前面加入钩子函数处理token复用的问题,只保证了用例的串联执行,我的部分测试用例中接入了通义千问的部分接口生成测试数据,七八个场景跑完差不多快要10分钟。考虑使用并发执行。 http://t.csdnimg.cn/ACexL 使用多线程和不使用耗时差距很大…

Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )

上期链接:Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客 上期我们聊了人物的受伤和死亡的逻辑和动画,我们主要学习了事件的执行,即我们在人物受伤时可能会触发很多的事件,比如触发人物受伤的动画以及播放音乐等…

一文了解Java 中的String、StringBuffer 与StringBuilder

String结构剖析 String是final 类,不能被其他的类继承 String有属性private final char vaLue[]; 用于存放字符串内容 注意: value 是个final类型, 不可以修改: 即value不能指向新的地址,但是单个字符内容是可以变化 两种创建String对象的区…

初学者必看的web前端开发学习路线,干货满满!

初学者必看的web前端开发学习路线,干货满满! 随着互联网的深入发展,前端工程师这个岗位在市场上的需求,薪资也是很可观的。前端很火,想自学前端的人也很多。包括一些学生、上班族、以前的UI,java,或完全零基础&#xf…

数据库系统概论(个人笔记)(第四部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)4、中间的SQL4.1 连接表达式4.2 视图4.3 事务4.4 完整性约束4.5 SQL数据类型和模式4.6 SQL中的索引定义4.7 授权 4、中间的SQL 4.1 连接表达式 Join Expressions Join…

C++之模板(一)

1、为什么需要模板 将具有相同逻辑的一段代码提供一份模板,当我们需要处理不同类型的时候,可以通过数据类型当作参数来传递,从而实例化出对应类型的处理版本。 2、模板的定义 也是一种静态多态。 3、模板的分类 4、函数模板 5、函数模板的使…

夏季家里粉尘螨虫满天飞?一招搞定!好用家用空气净化器品牌分享

每到夏季,是家中尘螨滋生的高发期。夏季无论是开窗通风还是关窗开空调,都很容易造成空气中的浮尘堆积,不注意卫生清洁,容易滋生细菌、尘螨。 易过敏、体质弱的人群长时间在空气污染环境中,很容易就会过敏或者发生其他…

openh264 SVC 时域分层原理介绍

openh264 OpenH264是一个开源的H.264编码器,由Cisco公司开发并贡献给开源社区。它支持包括SVC(Scalable Video Coding)在内的多种编码特性,适用于实时应用场景,比如WebRTC。OpenH264项目在GitHub上是公开的&#xff0…

外链是否会增加流量?

外链确实可以间接地帮助增加网站流量,不过要了解的是这不是直接影响,首先,外链主要是提升你的网站在搜索引擎中的整体权重。简单地说,当你的网站被很多其他的网站通过dofollow链接指向时,搜索引擎会认为你的网站内容质…

如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错:找不到匹配的 host key 算法

🛠️ 如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错:找不到匹配的 host key 算法 摘要: 本文将带领大家深入学习如何解决 Xshell 使用 SSH 连接 Linux 服务器时报错“找不到匹配的 host key 算法”的问题。通过详细的操作步骤和代码案…

有什么可以创建ai聊天的软件?5个软件帮助你快速创建ai聊天

有什么可以创建ai聊天的软件?5个软件帮助你快速创建ai聊天 AI聊天软件是一种利用人工智能技术构建的聊天机器人系统,它能够模拟人类的对话方式,回答用户提出的问题或者进行对话。这类软件在各个领域都有广泛的应用,可以用于客户服…

从Instance classifier重新思考多实例学习

弱监督的WSI分类通常被形式化为多实例学习(MIL)问题,其中每张slide都被视为一个bag,从中切出的patch被视为实例。现有的方法要么通过伪标记训练实例分类器,要么通过注意力机制将实例特征聚合为bag特征,然后…

Shopee虾皮API:获取商家店铺商品列表

一、平台介绍 Shopee,作为东南亚及中国台湾地区领先的电商平台,为卖家提供了一个便捷、高效的销售渠道。作为卖家,能够将自己的商品展示在Shopee平台上,并通过平台的流量和工具,将商品销售给更多的潜在买家。 为了帮…

Elasticsearch-使用Logstash同步Mysql

1.安装logstash es服务器版本必须和logstash版本一致 7.9.2 在/usr/local/src/下新建logstash文件夹,解压 下载logstash后查看是否安装成功,在logstash的bin目录下输入指令: ./logstash -e input { stdin { } } output { stdout {} }2.my…

Java项目:基于SSM框架实现的汽车养护保养管理系统【ssm+B/S架构+源码+数据库+开题+毕业论文+任务书】

一、项目简介 本项目是一套基于SSM框架实现的汽车养护保养管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

【Java05】Java中的多维数组

从数组底层运行机制上看,Java没有多维数组一说。所谓多维数组,是说一个引用变量指向的元素也是引用变量。 例如,type[] arrayName是个指向type类型元素的数组。倘若type也是数组引用变量,比如int[],那么这个数组就可以…

警惕!ELSEVIER旗下1本双1区TOP被On Hold !请大家谨慎投稿

【SciencePub学术】又1本!双1区TOP刊被On Hold !官方现在对期刊质量的管控越来越严格了,被标记为On Hold后的期刊中,大部分的命运也是被WOS数据库剔除!所以请大家谨慎投稿! 《Information Sciences》作为一…

Spring Security+Spring Boot实现登录认证以及权限认证

基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一,所谓认证,就是对当前访问系统的用户给予一个合法的身份标识,用户只有通过认证才可以进入系统,在物理世界里,有点类似于“拿工卡刷门禁”的…

【达梦数据库】typeorm+node.js+达梦数据库返回自增列值

1.配置环境,下载依赖包 typeorm init --name test22 --database mysql typeorm-dm,uuid,typeorm2,修改连接信息 修改src/ data-source.ts 文件 连接dm,可参考刚刚安装typeorm-dm 模块中的 README.md 3.修改自增信息 /* 修改前*/PrimaryGen…