JDK中有关23种设计模式

谈谈JDK中用到的设计模式 谈谈JDK中用到的设计模式 1.创建型设计模式 1.1抽象工厂模式 模式要点: 抽象工厂 提供创建产品的接口,包含多个创建产品的方法。 具体工厂 实现抽象工厂中的多个抽象方法,完成具体产品的创建。 抽象产品 定义产品的规范,描述产品的主要特征和功能。 具体产品 实现抽象产品定义的接口,由具体工厂来创建。 JDK实现示例 java.util.Collection接口中定义了一个抽象的... 阅读详情

下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns

一、Structural(结构型模式)

1.Adapter(适配器模式):

把一个接口或是类变成另外一种。

  • java.util.Arrays#asList()
  • javax.swing.JTable(TableModel)
  • java.io.InputStreamReader(InputStream)
  • java.io.OutputStreamWriter(OutputStream)
  • javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
  • javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()

2.Bridge(桥接模式):

把抽象和实现解藕,于是接口和实现可在完全独立开来。

  • AWT (提供了抽象层映射于实际的操作系统)
  • JDBC

3.Composite(组合模式):

让使用者把单独的对象和组合对象混用。

  • javax.swing.JComponent#add(Component)
  • java.awt.Container#add(Component)
  • java.util.Map#putAll(Map)
  • java.util.List#addAll(Collection)
  • java.util.Set#addAll(Collection)

4.Decorator(装饰器模式):

为一个对象动态的加上一系列的动作,而不需要因为这些动作的不同而产生大量的继承类。这个模式在JDK中几乎无处不在,所以,下面的列表只是一些典型的。

  • java.io.BufferedInputStream(InputStream)
  • java.io.DataInputStream(InputStream)
  • java.io.BufferedOutputStream(OutputStream)
  • java.util.zip.ZipOutputStream(OutputStream)
  • java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]()

5.Facade(外观模式):

用一个简单的接口包状一组组件,接口,抽象或是子系统。

  • java.lang.Class
  • javax.faces.webapp.FacesServlet

6.Flyweight(享元模式):

有效率地存储大量的小的对象。

  • java.lang.Integer#valueOf(int)
  • java.lang.Boolean#valueOf(boolean)
  • java.lang.Byte#valueOf(byte)
  • java.lang.Character#valueOf(char)

7.Proxy(代理模式):

用一个简单的对象来代替一个复杂的对象。

  • java.lang.reflect.Proxy
  • RMI

二、Creational(创建模式)

1.Factory(工厂模式):

简单来说,按照需求返回一个类型的实例。

  • java.lang.Proxy#newProxyInstance()
  • java.lang.Object#toString()
  • java.lang.Class#newInstance()
  • java.lang.reflect.Array#newInstance()
  • java.lang.reflect.Constructor#newInstance()
  • java.lang.Boolean#valueOf(String)
  • java.lang.Class#forName()

2.Abstract factory(抽象工厂模式):

创建一组有关联的对象实例。这个模式在JDK中也是相当的常见,还有很多的framework例如Spring。我们很容易找到这样的实例。

  • java.util.Calendar#getInstance()
  • java.util.Arrays#asList()
  • java.util.ResourceBundle#getBundle()
  • java.sql.DriverManager#getConnection()
  • java.sql.Connection#createStatement()
  • java.sql.Statement#executeQuery()
  • java.text.NumberFormat#getInstance()
  • javax.xml.transform.TransformerFactory#newInstance()

3.Singleton(单例模式):

只允许一个实例。在 Effective Java中建议使用Emun.

  • java.lang.Runtime#getRuntime()
  • java.awt.Toolkit#getDefaultToolkit()
  • java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment()
  • java.awt.Desktop#getDesktop()

4.Builder(建造者模式):

主要用来简化一个复杂的对象的创建。这个模式也可以用来实现一个 Fluent Interface。

  • java.lang.StringBuilder#append()
  • java.lang.StringBuffer#append()
  • java.sql.PreparedStatement
  • javax.swing.GroupLayout.Group#addComponent()

5.Prototype(原型模式):

使用自己的实例创建另一个实例。有时候,创建一个实例然后再把已有实例的值拷贝过去,是一个很复杂的动作。所以,使用这个模式可以避免这样的复杂性。

  • java.lang.Object#clone()
  • java.lang.Cloneable

三、Behavioral(行为模式)

1.Chain of responsibility(责任链模式):

把一个对象在一个链接传递直到被处理。在这个链上的所有的对象有相同的接口(抽象类)但却有不同的实现。

  • java.util.logging.Logger#log()
  • javax.servlet.Filter#doFilter()

2.Command(命令模式):

把一个或一些命令封装到一个对象中。

  • java.lang.Runnable
  • javax.swing.Action

3.Interpreter(解释器模式):

一个语法解释器的模式。

  • java.util.Pattern
  • java.text.Normalizer
  • java.text.Format

4.Iterator(迭代器模式):

提供一种一致的方法来顺序遍历一个容器中的所有元素。

  • java.util.Iterator
  • java.util.Enumeration

5.Mediator(中介者模式):

用来减少对象单的直接通讯的依赖关系。使用一个中间类来管理消息的方向。

  • java.util.Timer
  • java.util.concurrent.Executor#execute()
  • java.util.concurrent.ExecutorService#submit()
  • java.lang.reflect.Method#invoke()

6.Memento(备忘录模式):

给一个对象的状态做一个快照。Date类在内部使用了一个long型来做这个快照。

  • java.util.Date
  • java.io.Serializable

7.Null Object(空对象模式):

这个模式用来解决如果一个Collection中没有元素的情况。

  • java.util.Collections#emptyList()
  • java.util.Collections#emptyMap()
  • java.util.Collections#emptySet()

8.Observer(观察者模式):

允许一个对象向所有的侦听的对象广播自己的消息或事件。

  • java.util.EventListener
  • javax.servlet.http.HttpSessionBindingListener
  • javax.servlet.http.HttpSessionAttributeListener
  • javax.faces.event.PhaseListener

9.State(状态模式):

这个模式允许你可以在运行时很容易地根据自身内部的状态改变对象的行为。

  • java.util.Iterator
  • javax.faces.lifecycle.LifeCycle#execute()

10.Strategy(策略模式):

定义一组算法,并把其封装到一个对象中。然后在运行时,可以灵活的使用其中的一个算法。

  • java.util.Comparator#compare()
  • javax.servlet.http.HttpServlet
  • javax.servlet.Filter#doFilter()

11.Template method(模板模式):

允许子类重载部分父类而不需要完全重写。

  • java.util.Collections#sort()
  • java.io.InputStream#skip()
  • java.io.InputStream#read()
  • java.util.AbstractList#indexOf()

12.Visitor(访问者模式):

作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.

  • javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor
  • javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor
泛微OA表单开发实战:如何用JavaScript动态控制明细表的必填与可编辑属性 本文详细介绍了如何在泛微OA系统中使用JavaScript动态控制明细表字段的必填与可编辑属性。通过主表字段变更事件监听和明细表字段属性批量修改,实现智能化的表单交互,提升用户体验和系统灵活性。文章深入解析了关键API的使用方法,并提供了实战代码示例和最佳实践。 阅读详情

相关推荐

从FP16到FP8:我是如何让Stable Diffusion 3.5提速40%而不丢画质的

本文分享了StableDiffusion模型优化的实战经验。通过FP8精度转换、分层处理敏感模块,实现显存占用降低35%、推理速度提升40%。文章详细介绍了提升画质的五大技巧、本地/云端/移动端部署方案,以及二次元模型定制等垂直领域应用。同时总结了硬件兼容性、数据质量等七大常见陷阱,并强调持续监控和伦理考量。作者指出未来应关注MoE架构、注意力机制优化等方向,认为技术优化是持续追求性能与质量平衡的过程。

达则兼济天下 1186

科普文:Java基础系列之【2024年9月17日JDK23正式发布】

JDK 23 在这方面迈出了重要的一步,推出了初步的值类型支持,允许开发者使用更加轻量的对象模型,减少内存消耗并提升性能。JDK 23 进一步优化了虚拟线程的性能,特别是在 I/O 密集型任务和并发任务中的应用。JDK 23 在此基础上进行了更多的优化,使得模块系统更具可扩展性,尤其在大型应用程序的构建与维护方面,带来了更加灵活的模块依赖和增强的模块版本控制。LTS 版本更加注重稳定性,安全性,性能改进,默认支持是 8 年,其中 JDK 8 延长至 2030 年(16年),延长支持期间不再提供新的功能。

为无为,事无事,味无味。 3850

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1142

JDK 22 和 JDK 23:到目前为止我们所知道的

Oracle Java 平台组首席架构师Mark以来的第一个非 LTS 版本,现已进入第二个候选版本阶段。主线源代码存储库于 2023 年 12 月中旬(Rampdown 第一阶段)分叉到 JDK,定义了 JDK 22 的功能集。可以解决诸如回归或严重功能问题之类的关键错误,但必须解决这些问题。通过流程获得批准。根据,JDK 22将于2024年3月19日正式发布。最终的 12 个新功能集(以和。其中六 (6) 个新功能属于其中四 (4) 个新功能属于其中一 (1) 个新功能属于。

xuejianxinokok的专栏 5540

非目标代谢组学(untargeted metabolomics)中常用的方法学考察的方法(四)

最早使用的一种方法,从QC样本的总离子流图中选择具有代表性的离子峰(覆盖不同的保留时间,不同的强度),在对QC样本进行重复检测之后,计算这些离子的保留时间以及峰面积的相对标准偏差(RSD),用以考察分析方法的稳定性以及重复性。所有样品检测完之后,收集所有的QC样本的原始数据进行数据预处理,包括(峰提取,排列,归一化等),经过数据过滤(80%规则)之后,计算剩下的峰的峰面积的RSD值。由于QC样本是 等量混合了所有的被检测样本,理论上QC样本包含了所有样本中的代谢物,因此QC样本理论上会。

hlllllllhhhhh的博客 1487

STM32CubeMX实战:FreeRTOS内存管理5种方案全解析(附heap_4避坑指南)

本文深入解析了STM32CubeMX环境下FreeRTOS的5种内存管理方案(heap_1到heap_5),重点介绍了heap_4的优化策略与避坑指南。通过对比分析各方案的特点、性能指标及适用场景,帮助开发者根据项目需求选择最优内存管理策略,提升嵌入式系统开发效率与稳定性。

aa123的博客 618

Java 23:新功能正式公布

最新版本的 Java 开发工具包 23 (JDK) 在最新版本中具有四个新功能。根据此功能背后的 OpenJDK 提案,Java 平台应该定义和实现一个标准的类文件 API,该 API 与类文件格式一起发展,该格式可以轻松地更改或发展大约每六个月一次。自Java Development Kit 16发布以来, Vector API一直在Java的早期版本中孵化,一直到最新版本22。Java CodeBuilder 删除了与低级方法重复的中级方法,或者更糟糕的是,不经常使用的中级方法。

极道Jdon的技术博客 4490

Codex 团队如何用自己的产品构建产品——整个 Spec 只有 10 个要点

OpenAI Codex团队采用极简产品开发模式,整个产品规格仅10个要点。团队50-100人长期仅1名PM,设计师代码量已超过工程师。产品负责人Alexander Embiricos透露,团队几乎不写详细文档,仅在需要协调时写简短要点。OpenAI采用独特规划哲学:只做8周内短期或长期方向性规划,拒绝中期路线图。2025年GPT-5.2 Codex发布后,模型能力突破催生了桌面应用开发。团队强调"让离代码最近的人做决策",PM角色转变为"填空者",设计师与工程师界限

347

Java JDK 23 新特性详解:功能、概念与用法

JDK 23 在这方面迈出了重要的一步,推出了初步的值类型支持,允许开发者使用更加轻量的对象模型,减少内存消耗并提升性能。JDK 23 在此基础上进行了更多的优化,使得模块系统更具可扩展性,尤其在大型应用程序的构建与维护方面,带来了更加灵活的模块依赖和增强的模块版本控制。的引入允许更加高效的数据处理,特别是在大规模数值计算领域,这种无身份的对象将极大提升性能。通过启用 ZGC,可以让你的应用程序在大规模内存管理的场景下获得更低的延迟和更高的吞吐量。

u013531166的博客 2727

微信对话开放平台智能对话模块的几个亮点

微信AI首席科学家牛成公布了最新开放方案,并重磅宣布全面开放各层次 NLP 能力。具体说来,微信 AI 迈出了“三大步”: 以硬件合作为核心的智言小微硬件开放平台 2.0 正式亮相; 公开以对话开放能力为核心的微信对话开放平台; 全面开放以自然语言处理能力为核心的 NLP 基础技术平台。 参考:微信9年:张小龙指明方向,微信AI全面开放NLP能力 今天公开课上隆重介绍了...

素质云笔记 1万+

Windows 下 OpenClaw(小龙虾) 安装全记录:从零到一的保姆级图文教程(持续更新中)

本文主要介绍了Windows 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装并配置OpenClaw 2.3 步骤三:配置模型 2.4 步骤四:对话 3. 后续使用步骤

weixin_43178406的博客 16万+

jdk中的23种设计模式体现

[设计模式]JDK中的设计模式 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。 首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助。 一、设计模式是什么 (1)反复出现问题的解决方案 (2)增强软件的灵活性 (3)适应软件不断变化 二、学习JDK中设计模式的好处 (1)借鉴优秀代码的设计,有助于提高代码设计能力 (2)J

李凯龙 1612

【Unity3D插件】XCharts插件完全教程《全网最全》-专栏文章目录

最近在做图表类需求功能的时候,发现了一款强大的Unity3D插件,也就是XCharts图表插件,功能强大,支持多种图表。官方介绍:一款基于UGUI的功能强大、简单易用的数据可视化图表插件。支持折线图、饼状图、饼图、雷达图、散点图、热力图、环形图、K线图、极坐标、平行坐标等十多种内置图表,以及3D饼图、3D金字塔、漏斗图、仪表盘、水位图、象形柱图、甘特图、矩形树图等拓展图表。内置丰富示例和模板,参数可视化配置,效果实时预览,纯代码绘制。支持折线图、柱状图、饼图、雷达图、散点图、热力图等常见图表。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 3194

JDK中使用到的23个经典设计模式

A. 创建模式 Singleton(单态):只允许一个实例 [java] view plain copy Runtime.getRuntime();   java.awt.Toolkit.getDefaultToolkit();   java.awt.GraphicsEnvironment.getLocalGraphicsEnvironme

qq_35124535的博客 146

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JDK中有关23个经典设计模式的示例

<br />下面是JDK中有关23个经典设计模式的示例:<br />Structural(结构模式)<br />Adapter:<br />把一个接口或是类变成另外一种。● java.util.Arrays#asList()● javax.swing.JTable(TableModel)● java.io.InputStreamReader(InputStream)● java.io.OutputStreamWriter(OutputStream)● javax.xml.bind.annotation.ad

zjrbiancheng的专栏 776

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

23个经典JDK设计模式

<br />酷壳版主陈皓近日发表博文《JDK里的设计模式》,文中他列出了JDK中有关23个经典设计模式的示例。现把全文转载于此,全文如下:<br />下面是JDK中有关23个经典设计模式的示例:<br />Structural(结构模式)<br />Adapter:<br />把一个接口或是类变成另外一种。● java.util.Arrays#asList() ● javax.swing.JTable(TableModel) ● java.io.InputStreamReader(InputStream)

sony315的专栏 369

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDK源码中用到的23种设计模式

JDK源码中用到的23种设计模式创建模式Singleton(单例)Abstract factory(抽象工厂)Factory(工厂方法)Builder(建造者)Prototype(原型)结构模式Adapter(适配器)Composite(组合)Decorator(装饰器)Facade(门面)Flyweight(享元模式)Proxy(代理)行为模式Chain of Responsibility(责任链)Command(命令)Interpreter(解释器)Iterator(迭代器)Mediator(中介)Me

u014344668的专栏 971

JDK设计模式大揭秘:23种模式藏在你每天在用的类里

恭喜您!🎊 现在您已经拥有了JDK源码中23种设计模式的完整地图!

工一木子 761

【Java基础之二】JDK中使用到的23个经典设计模式

JDK中使用到的23个经典设计模式

水滴石穿的博客 717

JDK中有关23个经典设计模式

看原文吧,清楚些: [url]http://www.iteye.com/news/18725[/url] 下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论: [url]http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns[/url] Structu...

gundumw100的专栏 95
上一篇: spring配置hibernate的sessionFactory
下一篇: JAVA设计模式总结之23种设计模式
farmering
博客等级 码龄15年 18粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值