Java面试--设计模式

news2024/12/22 22:45:31

设计模式

目录

  • 设计模式
    • 1.单例模式?
    • 2.代理模式?
    • 3.策略模式?
    • 4.工厂模式?

1.单例模式?

单例模式是Java的一种设计思想,用此模式下,某个对象在jvm只允许有一个实例,防止这个对象多次引用创建多个实例消耗内存。

  • 饿汉模式:在类加载的时候就创建,用static修饰直接new出对象。在多线程下是安全的。
  • 懒汉模式:在使用的时候再创建。多线程下不安全,可用sychronized修饰代码块和双重检查机制(DCL)来处理,这里对对象变量加了一个volatile关键字来修饰,保证可见性,因为jvm编译器的优化,对对象重排序,线程访问时给内存地址可能是没有实例化的,这样获取信息都是为null

在这里插入图片描述

2.代理模式?

代理:一般请求服务器,会直接执行核心代码返回结果即可。但我们在返回结果可以附加些功能,比如日志打印,保存等,这些都可以通过代理模式实现。
动态代理有JDK代理和cglib代理。

  • JDK代理:这种代理是实现接口,在实现目标接口时,加入附加功能,通过代理类调用目标方法 实现步骤①需要有目标类且实现接口 ②创建一个代理类实现InvoationHandler接口调用invoke方法实现附加功能。③在具体调用方法前调用proxy的newProxyInstance(类加载器,目标对象接口,处理器(也是自定义的代理类))方法创建代理对象,通过代理对象调用目标方法。
  • cglib代理:使用底层的字节码技术,通过字节码技术为一个类创建子类并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势加入附加逻辑。实现步骤:①需要有目标接口 ②创建代理类实现MethodInterceptor接口,重写intercept接口实现附加功能 ③先创建空字节码对象new Enhancer(),设置目标类字节码参数;再创建回调对象;利用字节码创建得到代理对象;最后调用目标类方法

大家可参考这篇:原文

3.策略模式?

  • 策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式让算法独立于使用它的客户而变化。(如刷公交卡不同人使用类型卡)
  • ThreadPoolExecutor()中有个参数是需要输入拒绝策略参数,输入不同的策略方式实现不同的行为。

大家可参考这篇:原文

4.工厂模式?

工厂模式主要就是创建对象,且不让对象的逻辑暴露给客户端。下面一篇解释比较详细:
转载:原文

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

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

相关文章

依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中,我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高,那么在进行修改或扩展时,可能会对其他部分的代码产生影响,甚至引发错误。这就要求我们在编写代码时&#xf…

【VS Code】 vue项目使用scss显示语法错误、build编译正常

开发vue项目,使用scss老是报这个错误 解决方式: 1.安装vetur 2.在vs code的设置中添加 "files.associations": { "*.vue": "vue" }解决:

线性规划约束一个矩形在Polygon内部

最近在用线性规划,有一个比较有趣的问题,记录一下思路。 如何用线性规划约束一个矩形在Polygon内部? 问题:有如下图蓝色矩形,用线性规划表示出绿色矩形被约束在polygon内部,矩形的中心坐标是(x, y),宽和高…

计算机组成原理---关于乘法电路与除法运算电路的理解

目录 一.乘法电路 1.无符号数乘法运算的硬件实现逻辑: 2.补码1位乘法运算的硬件实现逻辑: 3.无符号阵列乘法器 4.补码阵列乘法器 二.除法电路 1.原码除法运算 2.补码除法运算(不恢复余数法) 本篇是看湖科大与王道视频总结…

35_WebShell管理工具、中国蚁剑AntSword的安装及使用、御剑的使用、后台目录扫描

WebShell管理工具 WebShell 以asp、php、jsp或cgi等网页形式存在的一种代码执行环境主要用于网站和服务器管理由于其便利性和功能强大,被特别修改后的WebShell也被部分人当作网站后门工具使用国内常用的WebShell有海阳ASP木马,Phpspy,c99sh…

<Qt> 系统 - 事件

目录 前言: 一、事件介绍 二、事件的处理 (一)鼠标事件 1. 进入和离开事件 2. 鼠标点击事件 3. 释放事件 4. 双击事件 5. 移动事件 6. 滚轮事件 (二)键盘按键事件 1. 单个按键 2. 组合按键 (…

如何判断监控设备是否支持语音对讲

目录 一、大华摄像机 二、海康摄像机 三、宇视摄像机 一、大华摄像机 注意:大华摄像机支持跨网语音对讲,即设备和服务器可以不在同一网络内,大华设备的语音通道填写:34020000001370000001 配置接入示例: 音频输入…

十日Python项目——第七日(商品购物车)

#前言: 在最近十天我会用Python做一个购物类电商项目,会用到DjangoMysqlRedisVue等。 今天是第六天,主要负责撰写编写关于商品购物车的编写,以及相应的增删改查。若是有不懂大家可以先阅读我的前六篇博客以能够顺承。 若是大家…

Github Copilot 使用技巧

🎯目标读者 本文不包含如何安装 Github Copilot本文介绍了 Github Copilot 使用方法和一些技巧 本人已经使用 Github Copilot 2 年了,交了 3 次年费,每年 100$ 着实心痛,但是用着确实爽歪歪 但是感觉一直只用了一小部分功能&am…

(第二十七天)

上午 核心:内核中的 ipvs , ipvsadm 1 、安装 ipvsadm [rootnat ~] # yum -y install ipvsadm 2 、配置规则 查看所有的规则,如果已经配置好规则,重启之后也就没有了 [rootnat ~] # ipvsadm -L -n 1 、配置 vip 网卡 &…

服装租赁押金管理-押金原路退回系统开通方法

一、婚纱影楼服装租赁收押金必要性 1. 保障服装的按时归还: - 押金的存在能促使租客按时归还服装,避免因拖延归还影响后续的租赁业务。比如,在一些大型活动期间,服装租赁需求旺盛,如果租客不按时归还,…

HTML样式- CSS——WEB开发系列08

一、HTML 基础概述 HTML 用于创建网页的结构。网页的所有内容&#xff0c;例如文本、图像、链接、表单等&#xff0c;都是通过 HTML 标签来定义的。以下是一个简单的 HTML 文档结构示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><…

matlab 音频音量处理(音量大小按照dB调节)

1 音量(声压级)以分贝(dB)表示的计算公式为: 2 % 已知的 x 值 x = 0:-1:-127; % 在这里填入 x 的具体值% 计算 y %y = 10

浅谈php://filter的妙用

文章目录 分析源码巧用编码与解码利用字符串操作方法 分析源码 <?php $content <?php exit; ?>; $content . $_POST[txt]; file_put_contents($_POST[filename], $content);首先&#xff0c;先分析一下这段代码。 首先他定义了content为’<?php exit;?>‘…

计算机网络17——IM聊天系统——客户端核心处理类框架搭建

目的 拆开客户端和服务端&#xff0c;使用Qt实现客户端&#xff0c;VS实现服务端 Qt创建项目 Qt文件类型 .pro文件&#xff1a;配置文件&#xff0c;决定了哪些文件参与编译&#xff0c;怎样参与编译 .h .cpp .ui&#xff1a;画图文件 Qt编码方式 Qt使用utf-8作为编码方…

服务器被ddos攻击多久能恢复?具体怎么操作

服务器被ddos攻击多久能恢复&#xff1f;如果防御措施得当&#xff0c;可能几分钟至几小时内就能缓解&#xff1b;若未采取预防措施或攻击特别猛烈&#xff0c;则可能需要几小时甚至几天才能完全恢复。服务器被DDoS攻击的恢复时间取决于攻击的规模和强度、服务器的配置和性能以…

【C++】类与对象(中)_7.const成员函数

7.const成员 7.1 const修饰类的成员函数 将const修饰的类成员函数称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进行修改。 我们来看看下面的代码 #define _CRT_SECU…

【ARM CoreLink 系列 5.1 -- CI-700 各种 Node 组件详细介绍】

请阅读【ARM CoreLink 文章专栏导读】 文章目录 CI-700 组件(Components)RN-I( I/O-coherent Request Node) 和 RN-D(I/O coherent Request Node with DVM)HN-F(Fully coherent Home Node)IO coherent Home Node (HN-I)IO coherent Home Node with Debug Trace Controller (H…

JSON与Jsoncpp库:数据交换的灵活选择

目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中&#xff0c;数据交换格式扮演着至关重要的角色。JSON&#xff08;JavaScript Object Notati…

鸿蒙(API 12 Beta3版)【媒体会话提供方】本地媒体会话

音视频应用在实现音视频功能的同时&#xff0c;需要作为媒体会话提供方接入媒体会话&#xff0c;在媒体会话控制方&#xff08;例如播控中心&#xff09;中展示媒体相关信息&#xff0c;及响应媒体会话控制方下发的播控命令。 基本概念 媒体会话元数据&#xff08;AVMetadata…