首页 > 编程语言 >高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?

高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?

时间:2024-08-12 21:26:00浏览次数:12  
标签:面试题 12 java JDK Pattern 模式 util 设计模式

如果有遗漏,评论区告诉我进行补充

面试官: 请列举出在JDK中几个常用的设计模式?

我回答:

在Java Development Kit (JDK) 中,许多设计模式被广泛使用,以帮助实现软件的结构、行为和复用。下面是一些在JDK中常见的设计模式及其简要说明:

  1. 工厂模式 (Factory Pattern)

    • JDK中的java.util.Calendarjava.util.Date, java.text.NumberFormat.getInstance()等类使用了工厂模式,通过静态方法如getInstance()来创建实例,而不是直接使用构造函数。这使得类可以在不修改客户端代码的情况下改变其内部实现。
  2. 单例模式 (Singleton Pattern)

    • java.lang.Runtimejava.lang.System, java.awt.Toolkit.getDefaultToolkit()等类都是单例模式的典型例子,确保了在整个应用程序中只有一个实例,并且提供了一个全局访问点。
  3. 适配器模式 (Adapter Pattern)

    • java.awt.dnd.DragSourcejava.awt.dnd.DropTarget,java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)等类使用了适配器模式,允许用户只实现感兴趣的接口方法,而忽略其他方法,这是通过提供一个默认的空实现来完成的。
  4. 装饰者模式 (Decorator Pattern)

    • java.io.InputStreamjava.io.OutputStream类族使用装饰者模式,允许在运行时向对象添加新的功能,而不改变其结构。例如,BufferedInputStream就是一个装饰者,它为InputStream添加了缓冲功能。
  5. 代理模式 (Proxy Pattern)

    • java.lang.reflect.Proxy类使用代理模式,允许创建动态代理类和实例,这些代理类可以实现一组给定的接口,并在调用方法时插入额外的功能,比如日志记录或事务管理。
  6. 观察者模式 (Observer Pattern)

    • java.util.Observablejava.util.Observer接口使用了观察者模式,允许对象注册多个监听者,当状态改变时通知所有监听者。这种模式在事件驱动的系统中非常常见。
  7. 策略模式 (Strategy Pattern)

    • java.util.Collections.sort(List, Comparator)方法使用策略模式,允许传入不同的比较器来决定排序策略。
  8. 模板方法模式 (Template Method Pattern)

    • java.lang.Thread类使用模板方法模式,其中run()方法是一个模板方法,子类可以重写run()而不必关心线程启动的细节。
  9. 迭代器模式 (Iterator Pattern)

    • java.util.Iterator接口定义了遍历集合的标准方法,这使得能够以统一的方式访问集合元素,而无需了解底层集合的具体实现。
  10. 职责链模式 (Chain of Responsibility Pattern)

    • java.util.logging.Logger使用职责链模式,多个Handler可以被链接起来,每个Handler都有机会处理日志记录,如果没有处理,则将记录传递给下一个Handler

以上模式在JDK中被广泛采用,体现了设计模式在提高代码可维护性、灵活性和扩展性方面的重要性。理解这些模式不仅有助于更好地使用JDK,也有助于在自己的项目中应用这些模式。

标签:面试题,12,java,JDK,Pattern,模式,util,设计模式
From: https://blog.csdn.net/qq_43071699/article/details/141142415

相关文章

  • java面试题:CPU飙高问题如何排查
    在Java面试中,关于CPU飙高问题的排查是一个常见的考点。以下是针对这一问题的详细排查步骤和建议:一、初步诊断1.查看系统监控:使用系统监控工具(如Windows的任务管理器、Linux的top或htop命令)查看当前CPU使用情况,找出哪个Java进程占用了大量CPU资源。注意观察CPU使用率的波......
  • 设计模式实战:交通管理系统的设计与实现
    系统功能需求交通信号控制:管理交通信号灯的状态,如红灯、绿灯和黄灯。交通策略应用:根据不同的交通状况(如高峰期、紧急状况)应用不同的交通控制策略。交通事件监控:实时监控交通事件(如事故、交通拥堵)并通知相关部门采取行动。设计分析状态模式状态模式用于表示对象在不......
  • 设计模式-05_代理模式&适配器模式&装饰者模式
    文章目录1代理模式1.1概述1.2结构1.3静态代理1.4JDK动态代理1.5CGLIB动态代理1.6三种代理的对比1.7优缺点1.8使用场景2适配器模式2.1概述2.2结构2.3类适配器模式2.4对象适配器模式2.5使用场景2.6JDK源码3装饰者模式3.1概述3.2结构3.3实例3.4使用......
  • 代码随想录Day12
    二叉树遍历分为前序、中序、后续、层序四种其中前中后序属于深度优先搜索,层序属于广度优先搜索前序遍历顺序:根节点->左子树->右子树中序遍历顺序:左子树->根节点->右子树后序遍历顺序:左子树->右子树->根节点不难发现,前中后其实就是根节点在遍历中的位置至于层序遍历,顾名......
  • 【闲话】08.12.24
    0812闲话头图:今日推歌:《苦若吞沙feat.诗岸》Zeno来吧bababalala旋转着眩晕着拥抱着过去的那一切全都bababalala只剩下空气还哭泣着来吧bababalala奔跑着跌倒了泥泞的用力的把一切全都bababalala只剩下我还在等什么太符合心境了有点不知......
  • 每日AI必读资讯 2024-08-12
    原文链接:https://blog.csdn.net/m0_46163918/article/details/14111374601黑匣子被打开了!能玩的Transformer可视化解释工具:TransformerExplainer佐治亚理工学院和IBM研究院开发一款基于web的开源交互式可视化工具「TransformerExplainer」,帮助非专业人士了解Transfor......
  • 12.无语义标签,字符实体
    一.无语义布局标签 顾名思义,这个标签就是单纯用来划分区域布局,并没有什么功能,有<div>还有<span>标签,<div>标签独占一行,<span>标签则不换行<div>这是div</div><div>这是div</div><span>这是span标签</span><span>这是span标签</span>这就是这两个标签的效果,先知......
  • 24/8/12 模拟赛
    hz暑假集训8/12数字三角形CF1517C签到题。题意:小\(D\)给你一个长度为\(n\)的排列\(p\),你需要根据\(p\)构造出一个三角形。该图案需要满足共\(n\)行,第\(i\)行有\(i\)个数,第\(i\)行最后一个数是\(p_i\)。数值\(p_i\)有\(p_i\)个且四联通。几个位置是......
  • 报错:2024-08-12T18:39:35.313+08:00 ERROR 29668 --- [demo2] [ main] o.s.
    org.springframework.beans.factory.BeanDefinitionStoreException:Failedtoparseconfigurationclass[com.example.demo.DemoApplication]atorg.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:179)~[spring-con......
  • 124. 项目74:简易句子结构分析器——《跟老吕学Python·新手》
    124.项目74:简易句子结构分析器——《跟老吕学Python·新手》124.项目74:简易句子结构分析器124.1目标124.2功能124.3设计124.4实现步骤124.5代码实现124.6测试124.7注意事项124.8小结124.项目74:简易句子结构分析器124.1目标开发一个......