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

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

面试官: 请列举出在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,也有助于在自己的项目中应用这些模式。

相关推荐
尽兴-4 分钟前
传统 Java/Vue 系统如何一步步接入 AI 维护
java·vue.js·人工智能·ai·大模型
shuoshuohaohao4 分钟前
《HTTP协议》
java·web
zzz_236811 分钟前
【Java实习面试算法冲刺】图论
java·算法·面试
一路向北North23 分钟前
Spring Security OAuth2.0(22):分布式系统授权-搭建网关
java·后端·spring
存在的五月雨28 分钟前
SpringBoot后端限制重复提交
java·spring boot·后端
Sam_Deep_Thinking1 小时前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·面试·程序员
paopaokaka_luck1 小时前
基于Springboot3+Vue3的宠物殡葬管理系统(webSocket实时通讯、接入腾讯地图、支付宝沙盒支付、Echarts图形化分析)
java·开发语言·网络·后端
春卷同学1 小时前
HarmonyOS掌上记账APP开发实践第3篇:接口与实现分离 — MoneyTrack Types.ets 与 Models.ets 的双层设计模式
设计模式
前鼻音太阳熊1 小时前
【MES系统】MES为什么需要SSE?从设备实时监控谈Spring Boot流式推送设计
java·spring boot·后端
Lhappy嘻嘻1 小时前
网络初识|基础入门:局域网广域网、IP 端口、TCP/IP 五层模型与封装解封装全过程
java·开发语言·网络·笔记·网络协议·tcp/ip