java面试(企业场景)

news2024/11/24 16:57:25

设计模式

工厂方法模式

简单工厂模式

简单工厂包括以下角色:

  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解决单点登录

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动采集软件||自动采集主流电商商品详情SKU数据价格功能实现||电商API接口的应用

实现自动化淘宝商品数据采集的方法有多种,一种常见的方式是利用网络 Python 技术。您可以编写一个网络 Python程序,通过模拟浏览器发送请求,获取淘宝商品页面的数据,并对数据进行解析和提取,最终存储到数据库或文件中。…

力扣172. 阶乘后的零

Problem: 172. 阶乘后的零 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.要使得末尾出现0,则乘式中必须出现因子2与5; 2.而由于对于一个数的阶乘,易知因子2的个数是大于因子5的个数(因为只要出现偶数则可以分解出…

1V升3V升压LED驱动WT7013

1V升3V升压LED驱动WT7013 WT7013是一款专业的高亮度LED驱动芯片,其具备提供1A驱动电流以支持3W的LED设备运行的能力。此款芯片以其高效率和低功耗的特性,使其在适用于使用1到2个碱性电池或者锂电池供电的LED照明设备中表现卓越。 WT7013 还配备有开路保…

DOS INT 21H中断 2号功能暗改AL

注意此时AX0200,DX0057 执行INT 21H之后: 可以看到执行完“??? [BXSI]”之后,AL就变为了57H,和DL相同。 部分INT 21H功能表: 所以究竟是什么原因呢? -------------------------------------------…

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

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

s2b2c这个模式如今发展得怎么样了?

在工业时代,每一个客户和消费者都是一个独立的个体,是被动地接受广告和被推送产品的,但在互联网时代,由于信息技术的基础设施和广泛沟通的社交互动,客户已经因为各种各样的社交场景事先聚集到一起。在个性化即大众化的…

基于WPF技术的换热站智能监控系统16--动态数据绑定

1、实现思路 1)实时读取到的数据绑定到前台UI控件上,这个通过MVVM模式实现,同时注意实时读取必须通过任务task异步方式,这就需要读取PLC数据。 2)UI控件的动作,如开或关水泵,必定能够将值写入…

【教学类-12-12】20240617通义万相-动物图片6张编故事(A4一页4条)

背景需求 【教学类-12-11】20240612通义万相-动物图片连连看(A4一页3套)-CSDN博客文章浏览阅读891次,点赞34次,收藏11次。【教学类-12-11】20240612通义万相-动物图片连连看(A4一页3套)https://blog.csdn.n…

新质生产力水平测算与中国经济增长新动能(dta数据及do代码)

时间跨度:2012-2022年 数据范围:全国30个省份(不含港澳台、西藏) 数据指标: 参考韩文龙等的做法,收集了全部控制变量与稳定性检验所需变量。 类型 符号 变量 变量定义 被解释变量 GDP 各省人均GDP…

【C++】:list容器的基本使用

目录 🚀前言一,list的介绍二,list的基本使用2.1 list的构造2.2 list迭代器的使用2.3 list的头插,头删,尾插和尾删2.4 list的插入和删除2.5 list 的 resize/swap/clear 🚀前言 list中的接口比较多&#xff…

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基础 - 练习(一)打印等腰三角形

Java基础练习 打印等腰三角形,先上代码: public static void main(String[] args) {// 打印等腰三角形System.out.println("打印等腰三角形:");isoscelesTriangle(); } public static void isoscelesTriangle() {// for循环控制行…

Git 代码管理规范 !

分支命名 master 分支 master 为主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。master 分支一般由 release 以及 hotfix 分支合并,任何时间都不能直接修改代码。 develop 分支 develop 为开发环境分支,始终保持最…

车载ADAS面试题,零基础也能看得懂!

周一来刷刷ADAS相关的面试题吧!相信看完这些题目,你会对ADAS有个更清晰的认识,即使你是零基础也可以轻松明白! 1、描述 ADAS 系统的基本组成和功能 答案:高级驾驶辅助系统(ADAS)是一套融合了多种…

课设--学生成绩管理系统(核心代码部分)

欢迎来到 Papicatch的博客 系统介绍 课设--学生成绩管理系统(一)-CSDN博客 课设--学生成绩管理系统(二)-CSDN博客 课设--学生成绩管理系统(三)-CSDN博客 目录 🍉内部接口 🍈 登…

探索未来工作新伙伴:机器人流程自动化(RPA)揭秘

想象一下,如果你的日常工作中那些繁琐、重复的任务,比如数据录入、文件整理、邮件发送等,都能自动完成,你将拥有更多时间专注于真正需要创造力和智慧的工作,是不是听起来就像拥有了一个私人助理?这并不是遥…

基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理

目录 前言 一、空间表设计 1、物理表结构 二、后台数据管理 1、数据去重 2、去重的具体实现 3、度分秒数据格式转换 4、具体的转换方法 5、新增界面的实现 三、数据管理界面 总结 前言 众所周知,漂亮国在全球范围内部署了大量的基地,用以维持其…

安卓实现圆形按钮轮廓以及解决无法更改按钮颜色的问题

1.实现按钮轮廓 在drawable文件新建xml文件 <shape xmlns:android"http://schemas.android.com/apk/res/android"<!--实现圆形-->android:shape"oval"><!--指定内部的填充色--><solid android:color"#FFFFFF"/><!-…

Python网络数据抓取(9):XPath

引言 XPath 是一种用于从 XML 文档中选取特定节点的查询语言。如果你对 XML 文档不太熟悉&#xff0c;XPath 可以帮你完成网页抓取的所有工作。 实战 XML&#xff0c;即扩展标记语言&#xff0c;它与 HTML&#xff0c;也就是我们熟知的超文本标记语言&#xff0c;有相似之处&am…