JDK中的设计模式体现示例

在Java JDK(Java Development Kit)中有很多模式,了解一些对程序设计会非常有益,以下是一些在JDK中常见的设计模式体现的示例:

1.工厂模式(Factory Pattern)

  • JDK中的java.util.Calendar类就是一个典型的工厂模式的例子。它提供了静态工厂方法getInstance()来获取特定类型的日历实例,根据用户的默认或指定语言环境创建相应的日历实现,隐藏了创建不同日历类型的具体实现细节,如getInstance(TimeZone zone, Locale aLocale)
  • java.text.NumberFormat类也是一个抽象工厂模式的例子,它提供了多种数字格式化的实现。静态方法 getNumberInstance()getCurrencyInstance() 和 getPercentInstance(),根据参数的不同返回适合格式化数字、货币或百分比的不同类型的 NumberFormat 实例。

2.单例模式(Singleton Pattern)

  • JDK中的java.lang.Runtime类就是一个单例模式的例子。它提供了静态方法getRuntime()来获取唯一的Runtime实例,使得应用程序能够在运行时环境中受到运行环境的影响。

3.观察者模式(Observer Pattern)

  • JDK中的java.util.Observable类和java.util.Observer接口是实现观察者模式的例子。当一个对象的状态发生变化时,它可以通知所有依赖它的观察者对象。
  • Java Swing UI 框架中大量使用了观察者模式,例如 java.util.EventListener 和它的子接口(如 MouseListenerKeyListener 等),通过注册监听器到事件源(如 JButton 或 JTable)来响应特定的事件。

3.适配器模式(Adapter Pattern)

  • JDK中的java.util.Arrays类中的asList()方法就是一个适配器模式的例子。它可以将一个数组适配为一个列表(List),使得数组可以像列表一样被使用。
  • java.io.InputStreamReader 和 java.io.OutputStreamWriter 类将字节流(如 InputStream 和 OutputStream)适配为字符流(如 Reader 和 Writer),从而透明地处理字符编码转换。

4.装饰器模式(Decorator Pattern)

  • JDK中的I/O流体系就是一个装饰器模式的例子。例如,BufferedInputStream类就是InputStream的一个装饰器,它为InputStream提供了缓冲功能。
  • Java IO 包中的流类体系,如 BufferedReader 装饰 Reader,提供了缓冲功能,而没有修改基础类的接口。

5.策略模式(Strategy Pattern)

  • JDK中的java.util.Comparator接口和Collections.sort()方法是一个策略模式的例子。通过传递不同的Comparator实现,可以定制排序策略。

6.模板方法模式(Template Method Pattern)

  • JDK中的java.io.Writer类中的write()方法就是一个模板方法模式的例子。它定义了写入字符的基本流程,但具体的实现细节(如何写入)留给子类去实现。

7.建造者模式(Builder)

  • 示例:java.lang.StringBuilder 或 java.lang.StringBuffer 类的 append() 系列方法,允许逐步构建字符串对象,同时避免频繁的字符串拼接带来的性能损失。

8.原型模式(Prototype)

  • 任何实现了 java.lang.Cloneable 接口的类都可以通过 Object#clone() 方法复制自身,但需要注意的是,Java中的clone()方法实现的是浅拷贝,若需深拷贝需要自己覆盖此方法并处理引用对象的复制。
  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值