java八股文面试[设计模式]——JDK 类库常用的设计模式

该博客主要介绍了JDK中多种设计模式,如抽象工厂、建造者、工厂等模式。详细阐述了各模式对应类的功能及方法作用,还说明了模式的作用和在JDK中的体现,如单例模式的Runtime类、适配器模式的Arrays类等,对理解Java设计模式有很大帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)抽象工厂

javax.xml.parsers.DocumentBuilderFactory抽象类
public static DocumentBuilderFactory newInstance()方法
类功能:使得应用程序可以通过XML文件,获得一个能生成DOM对象的解析器
方法功能:获取一个DocumentBuilderFactory的新实例。这一静态方法会创建一个新的工厂实例。

2)建造者模式

java.lang.StringBuilder,这是一个final类
public StringBuilder append(String str)方法,这一方法是对父类的覆写
类功能:用于一个不可更改的字符序列。
方法功能:根据现有字符序列和追加字符,通过系统拷贝方法System.arraycopy生成一个新的字符序列。

DocumentBuilder(org.w3c.dom) 

类图:

3)工厂模式

java.text.NumberFormat抽象类。
public final static NumberFormat getInstance()方法。
类功能:用于数字格式的抽象基类
方法功能:返回一个“对当前默认场景下的一个通用数字格式”的NumberFormat。显然属于工厂模式的使用。

静态工厂

作用:

  • 代替构造函数创造对象
  • 方法名比构造函数清晰

JDK中体现:

  • Integer.valueOf
  • Class.forName

类图:

工厂方法

作用:

  • 子类决定哪一个类实例化

JDK中体现:

  • Collection.iterator方法

类图:

4)原型模式

java.lang.Object
protected native Object clone() 方法
类功能:所有类的父类
方法功能:根据现有实例,返回一个浅拷贝对象

5)单例模式

java.lang.RunTime
public static Runtime getRuntime()
类功能:每一个运行的java应用都会有一个唯一的RunTime类的实例,这个实例使得应用程序在运行期间能够受到运行环境的影响。
方法功能:返回一个和当前java应用关联的RunTime对象。

6)适配器模式

java.util.Arrays
public static List asList(T… a)方法。
类功能:此类包含了大量对数组操作的方法。
方法功能:将一个引用类型的数组转为一个List。从而可以使用List类的操作来操作数组对象,但是有一点要注意:就是不能使用add(),remove()操作,因为返回的list底层是基于数组的,数组结构是不能更改的。 list类就是这里的适配器,通过这个适配器,对数组的直接操作变为间接操作。

作用:

  • 使不兼容的接口相容

JDK中体现:

  • java.io.InputStreamReader(InputStream)
  • java.io.OutputStreamWriter(OutputStream) 

类图:

 

7)桥梁模式

作用:

  • 将抽象部分与其实现部分分离,使它们都可以独立地变化

JDK中体现:

  • java.util.logging中的Handler和Formatter 

类图:

8)组合模式

作用:

  • 一致地对待组合对象和独立对象

JDK中体现:

  • org.w3c.dom
  • javax.swing.JComponent#add(Component)

类图: 

9)装饰者模式

作用:

  • 为类添加新的功能;防止类继承带来的爆炸式增长

JDK中体现:

  • java.io包
  • java.util.Collections#synchronizedList(List)

类图: 

10)外观模式

作用:

  • 封装一组交互类,一致地对外提供接口
  • 封装子系统,简化子系统调用

JDK中体现:

  • java.util.logging包

类图: 

 

11)享元模式

作用:

  • 共享对象,节省内存

JDK中体现:

  • Integer.valueOf(int i);Character.valueOf(char c)
  • String常量池

类图: 

 

12)代理模式

作用:

  • 透明调用被代理对象,无须知道复杂实现细节
  • 增加被代理类的功能

JDK中体现:

  • 动态代理
  • RMI

类图:

13)迭代器模式

作用:

  • 将集合的迭代和集合本身分离

JDK中体现:

  • Iterator、Enumeration接口

类图: 

14)观察者模式

作用:

  • 通知对象状态改变

JDK中体现:

  • java.util.Observer,Observable
  • Swing中的Listener

类图:

15)模板方法模式

作用:

  • 定义算法的结构,子类只实现不同的部分

JDK中体现:

  • ThreadPoolExecutor.Worker

类图: 

 

16)策略模式

作用:

  • 提供不同的算法

JDK中的体现:

  • ThreadPoolExecutor中的四种拒绝策略

类图: 

 

17)责任链模式

作用:

  • 请求会被链上的对象处理,但是客户端不知道请求会被哪些对象处理

JDK中体现:

  • java.util.logging.Logger会将log委托给parent logger
  • ClassLoader的委托模型

类图: 

 

18)命令模式

作用:

  • 封装操作,使接口一致
  • 将调用者和接收者在空间和时间上解耦合

JDK中体现:

  • Runnable
  • Callable
  • ThreadPoolExecutor

类图:

 

19)状态模式

作用:

  • 将主对象和其状态分离,状态对象负责主对象的状态转换,使主对象类功能减轻

JDK中体现:

  • 未发现

类图:

知识来源:马士兵教育

Java基础(二十二)——JDK中的设计模式(各设计模式的作用,jdk中的体现)_jdk设计模式应用场景_我爱豆子的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小田田_XOW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值