当前位置: 首页 > news >正文

设计模式面试题

设计模式分为

  1. 创建型 工厂模式 单例 原型
  2. 行为性 责任链 迭代器 命令
  3. 中介型
  4. 结构性 适配器 代理 门面  装饰器 组合 桥接

单例设计模式

懒汉式 用到时再创建,省内存

饿汉式 类创建时就创建,会占用内存

内部类  用到时再创建,省内存

线程池、数据库连接池常用

懒汉式

   volatile禁止指令重排

package com.fang.order.controller;public class Singleton {private volatile static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

饿汉式 利用jvm类加载机制 

public class Singleton {private static final Singleton instance = new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
}

 内部类 

public class Singleton {private static class InnerSingleton {private static Singleton INSTANCE = new Singleton();}private Singleton() {}public static Singleton getInstance() {return InnerSingleton.INSTANCE;}
}

 工厂方法模式

简单工厂、工厂方法、抽象工厂

简单工厂

    在不暴露生成逻辑的前提下生成一个实例  DoorFactory 根据输入的参数来返回不同的实现类。

 

 

工厂方法 

     概念:把生产逻辑移交给子类。

     抽象出一个工厂抽象类,抽象类完成共有的方法,然后每个具体实现类去实现个性化生成部分。

 

 

 

抽象工厂

只有一个产品时是工厂方法;多个产品时就是抽象工厂  比如下图DoorFactory同时生产DoorExpert和Door两个产品。

 

 

模板方法模式

按照一定步骤解决问题时常用

抽象类定义一个共有方法templateMethod,此方法内部调用templateMethod0、templateMethod1。templateMethod0、templateMethod1方法由子类具体实现

此模式应用在HttpServlet、AbstractController等类中

 

 

 

责任链模式

每一步做特定的任务,传给下一步。

优点:扩展性好,耦合性低  劣势:链太长,性能损耗大

 

代理模式

静态代理 代码层面编写,被代理类作为代理类的成员变量,代理类在调用被代理类的方法前后最某些增强。

动态代理 运行时代理。jdk的Class类和cglib实现。

  • jdk :自定义类继承InvocationHandler类,实现invoke方法。构造方法传入被代理类。

(1)jdk方式调用

 

 

相关文章:

设计模式面试题

设计模式分为 创建型 工厂模式 单例 原型行为性 责任链 迭代器 命令中介型结构性 适配器 代理 门面 装饰器 组合 桥接单例设计模式 懒汉式 用到时再创建,省内存 饿汉式 类创建时就创建,会占用内存 内部类 用到时再创建,省内存 线程池、数据…...

需要知道的一些API接口的基础知识

API是应用程序编程接口(Application Programming Interface)的缩写,能够起到两个软件组件之间的连接器或中介的作用。此类接口往往通过一组明确的协议,来表示各种原始的请求和响应。API文档可以向开发人员展示请求和响应是如何形成…...

互融云数字资产管理平台综合解决方案

自十八大以来,发展数字经济逐步成为了国家战略。从2015年国务院印发《促进大数据发展行动纲要》,到2020年4月中央发布《关于构建更加完善的要素市场化配置体制机制的意见》,再到2022年底出台《中共中央、国务院关于构建数据基础制度更好发挥数…...

记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历

第一篇章:吸引HR 如果你想在众多简历中脱颖而出,需要注意以下几点: 1、突出你的亮点: 给你的简历一个吸引人的文件命名和头部,突出你的关键技能和经验。 2、采用简洁的语言: 用简单易懂的语言来描述你的…...

AQS学习:ReentrantLock源码解析

前言 多线程知识中理解了ReentrantLock之后,对于整个AQS也会有大概的理解,后面再去看其它锁的源码就会比较容易。下面带大家一块来学习ReentrantLock源码。 概述 ReentrantLock是可重入的互斥锁,虽然具有与synchronized相同功能&#xff0…...

RocketMQ源码分析消息消费机制—-消费端消息负载均衡机制与重新分布

1、消息消费需要解决的问题 首先再次重复啰嗦一下 RocketMQ 消息消费的一些基本元素的关系 主题 —》 消息队列(MessageQueue) 1 对多。 主题 —》 消息生产者,一般主题会由多个生产者组成,生产者组。 主题 —》 消息消费者,一般一个主题…...

华为OD机试真题Python实现【数据分类】真题+解题思路+代码(20222023)

数据分类 题目 对一个数据a进行分类, 分类方法是,此数据a(4 个字节大小)的 4 个字节相加对一个给定值b取模, 如果得到的结果小于一个给定的值c则数据a为有效类型,其类型为取模的值。 如果得到的结果大于或者等于c则数据a为无效类型。 比如一个数据a = 0x01010101,b = 3…...

vue项目中引入字体包

问题: 项目开发过程中,因UI的显示要求,需要引入一些字体,那如何引入外部字体呢?很简单,只需要以下3步 一 下载对应的字体包文件,放置到我们的项目中 ​ 比如我需要PingFangSC的系列字体&#…...

Linux 文件相关操作

文件相关操作 编辑文件 命令: vi 文件名 然后输入i进入编辑模式 编辑完成后输入esc退出编辑 输入:wq保存即便目录下没有这个文件,也可以想使用vi 文件名进行编辑,保存退出后会创建这个文件 查看文件内容 命令: cat 文件名复…...

【计算机网络】应用题方法总结

0.前言本篇博客主要记录自己在学习到的部分解决计算机网络应用题方法,主要参考视频如下:计算机网络期末复习 应用题_哔哩哔哩_bilibili【计算机网络】子网划分题型总结_哔哩哔哩_bilibili循环冗余码step 1:确定冗余码长度。多项式最高位即为冗…...

Linux 浅谈之性能分析工具 perf

Linux 浅谈之性能分析工具 perf HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 Linux 浅谈系列,收录在操作系统专栏中 😜😜😜 本系列将记录一些阿呆个人整理的 OS 相关知识…...

代码随想录-Day7:四数相加、三数之和

454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0示例 1&#xff1a; 输入&#xff1…...

jsp在线考试系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 在线考试系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5 开发&#xff0c;数据库为Mysql&#xff0c;使用j…...

【总结】2023数学建模美赛!收官!

今年的美赛时间是2.17-2.21&#xff0c;这学期疫情放开了之后管的没那么严了&#xff0c;我们小组就都提前一天到学校了&#xff0c;全力准备17号的比赛。 时间流程 刚拿到6个题的时候&#xff0c;我们三个人一人看两个题&#xff0c;每个人从两个题中再选出来一个自己觉得有…...

C# GDI+ winform绘图知识总结

一、Graphics GDI是GDI&#xff08;Windows Graphics Device Interface&#xff09;的后继者&#xff0c;它是.NET Framework为操作图形提供的应用程序编程接口&#xff0c;主要用在窗体上绘制各种图形图像&#xff0c;可以用于绘制各种数据图像、数学仿真等。 Graphics类是G…...

【研究空间复用及函数调用问题】

本篇总结函数调用过程会存在的一些奇怪现象&#xff0c;空间复用问题&#xff0c;其实本质上涉及函数调用的底层原理&#xff0c;理解函数栈帧的创建和销毁这样的问题直接迎刃而解。1.空间复用问题案例1案例22.函数调用过程不清晰问题案例33.总结1.空间复用问题 案例1 我们先…...

SQL常用查询语句

SELECT语句用于查询数据库中的内容 目录 1 查询指定表的所有内容 2 显示所有行的指定列 3 显示指定行的指定列 4 对查询结果进行排序 4.1 按照单一字段排序 4.2 多重排序 5 查询数据总数 5.1 查询一共有多少行 5.2 统计符合条件的有多少行 6 给查询出来的…...

【Python实战】一大波高颜值主播来袭:快看,某网站颜值排名,为了这个排名我可是大费周章啦,第一名不亏是你...(人脸检测+爬虫实战)

导语 民间一直有个传闻......「听说某站的小哥哥小姐姐颜值都很高哦&#xff01;」 &#xff08;不是颜值高才能加入&#xff0c;是优秀的人恰好颜值高&#xff09; 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末…...

Linux进程学习【三】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f38a;每篇一句&#xff1a; 图片来源 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…...

Spring自动装配的底层逻辑

Spring是如何自动装配Bean的&#xff1f;看源码一些自己的理解&#xff0c;如有错漏&#xff0c;请指正 使用Spring之前我们要先去web.xml中设置一下Spring的配置文件&#xff0c;在Spring的配置文件中&#xff0c;是通过component-scan扫描器去扫描base-package底下所有的类装…...

OpenPose终极指南:10分钟掌握人体姿态估计核心技术

OpenPose终极指南&#xff1a;10分钟掌握人体姿态估计核心技术 【免费下载链接】openpose 项目地址: https://gitcode.com/gh_mirrors/op/openpose 想要快速搭建专业级的人体姿态识别系统吗&#xff1f;OpenPose作为业界领先的开源姿态估计库&#xff0c;能够实时检测图…...

Pi0在物流分拣中的应用:智能包裹识别系统

Pi0在物流分拣中的应用&#xff1a;智能包裹识别系统 1. 物流分拣的现实挑战与技术破局点 每天清晨&#xff0c;当第一辆货车驶入分拣中心&#xff0c;成千上万的包裹开始在传送带上流动。它们来自不同电商平台、尺寸各异、包装材质多样&#xff0c;有的贴着模糊的条码&#…...

KeyDecoder项目架构分析:理解Flutter应用的数据流与状态管理

KeyDecoder项目架构分析&#xff1a;理解Flutter应用的数据流与状态管理 【免费下载链接】KeyDecoder KeyDecoder app lets you use your smartphone or tablet to decode your mechanical keys in seconds. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyDecoder Ke…...

零成本商用开源字体解决方案:思源宋体全面应用指南

零成本商用开源字体解决方案&#xff1a;思源宋体全面应用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 如何在商业项目中避免字体侵权风险&#xff1f;怎样才能不花一分钱获得专…...

Seelen-UI桌面美化终极指南:5步打造个性化Windows工作环境

Seelen-UI桌面美化终极指南&#xff1a;5步打造个性化Windows工作环境 【免费下载链接】Seelen-UI The Fully Customizable Desktop Environment for Windows 10/11. 项目地址: https://gitcode.com/GitHub_Trending/se/Seelen-UI Seelen-UI是一个为Windows 10/11设计的…...

Changedetection.io网页监控工具:免费开源网站变更检测终极指南

Changedetection.io网页监控工具&#xff1a;免费开源网站变更检测终极指南 【免费下载链接】changedetection.io The best and simplest free open source website change detection, website watcher, restock monitor and notification service. Restock Monitor, change de…...

Step3-VL-10B在STM32嵌入式开发中的应用:图像识别实战

Step3-VL-10B在STM32嵌入式开发中的应用&#xff1a;图像识别实战 如何在资源受限的嵌入式设备上实现高质量的图像识别&#xff1f;本文通过Step3-VL-10B模型在STM32上的实战应用&#xff0c;为你揭示轻量级视觉模型的部署奥秘。 1. 为什么选择Step3-VL-10B用于STM32开发 STM3…...

OpenClaw+nanobot镜像:学术PDF自动摘要系统实战

OpenClawnanobot镜像&#xff1a;学术PDF自动摘要系统实战 1. 为什么需要自动化文献处理 作为一名经常需要阅读大量学术论文的研究者&#xff0c;我发现自己每周要花费数小时在重复性劳动上&#xff1a;下载PDF、快速浏览摘要、标记关键段落、整理参考文献。这些机械性工作不…...

数字游民工作流:OpenClaw+nanobot全球远程办公方案

数字游民工作流&#xff1a;OpenClawnanobot全球远程办公方案 1. 为什么需要自动化全球办公方案 作为一名长期在东南亚各国旅居的数字游民&#xff0c;我深刻体会到跨时区工作的痛苦。凌晨三点被欧洲同事的Slack消息吵醒&#xff0c;错过亚太区的晨会&#xff0c;或是忘记在不…...

translategemma-12b-it部署案例:基于Ollama的轻量级多模态翻译服务搭建

translategemma-12b-it部署案例&#xff1a;基于Ollama的轻量级多模态翻译服务搭建 想象一下&#xff0c;你正在处理一份满是英文的产品说明书&#xff0c;或者收到了一张包含外文菜单的图片。传统方法可能需要你手动打字、复制粘贴&#xff0c;或者使用多个工具来回切换。现在…...