摘要:本文只是寻找设计模式在中的应用。来补全这一块工厂模式中的应用包线程池解释和代码线程池中有线程创建工厂。状态模式中的应用解释和代码根据一个指针的状态而改变自己的行为适配器模式中的应用解释和代码将一个类的接口转换成客户希望的另外一个接口。
前言
最近重学设计模式,而且还有很多源码要看。所以就想一举两得。从源码中寻找设计模式。顺便还可以看看源码。。。
本文只是寻找设计模式在java中的应用。优缺点就不细说了。而且也不可能将jdk中所有涉及设计模式的例子都举出来。希望大家积极评论。来补全这一块
java.sql包
线程池
线程池中有线程创建工厂。应用了工厂模式
策略模式 jdk中的应用JAVA AWT 中的 LayoutManager
Comparator
在集合元素的比较中,可以传入一个comparer。不同的comparer有不同的比较策略
装饰者模式 jdk中的应用java.io包
解释和代码装饰者模式可以动态地给一个对象增加其他职责,就扩展对象功能来说,装饰者模式比生成子类更为灵活。在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,具有改善了的功能的流处理器。
代理模式 jdk中的应用jdk中的Proxy类
解释和代码Proxy类可以动态代理生成代理对象
原型模式 jdk中的应用java的clone方法
解释和代码原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能
clone是基于内存级别的复制。不是用构造方法。创建重复对象性能更高
java.io.InputStream, java.io.OutputStream, java.io.Reader和java.io.Writer的所有非抽象方法
java.util.AbstractList, java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法
父类实现关键步骤,子类实现了具体步骤
外观模式 jdk中的应用java.lang.Class
java的三层开发模式
Class.forName方法生成一个Class对象。作为对对象操作的总入口。
建造者模式 jdk中的应用java.lang.StringBuilder
java.lang.StringBuffer
StringBuilder和Stringbuffer可以扩展原对象不同的字符串也可以按不同的顺序拼接
观察者模式 jdk中的应用java.util.Observer接口
解释和代码这个接口好像我平时开发没用到。他的所有实现类都是在sun包的。
状态模式 jdk中的应用java.util.Iterator
解释和代码根据一个指针的状态而改变自己的行为
适配器模式 jdk中的应用java.util.Arrays.asList()
java.io.InputStreamReader(InputStream)
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Arrays将集合转换为list。Inputstream转换成reader
java.util.Map#putAll(Map)
java.util.List#addAll(Collection)
java.util.Set#addAll
组合模式用于把一组相似的对象当作一个单一的对象。和对象组合成集合一致
迭代器模式 jdk中的应用java.util.Iterator
java.util.Enumeration
提供一个一致的方法来顺序访问集合中的对象,这个方法与底层的集合的具体实现无关。
单例模式 jdk中的应用java.lang.Runtime
。。。。
private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime;桥接模式 jdk中的应用
java.sql.DrivenManager
解释和代码
通过上图可以看出,基于JDBC的应用程序,使用JDBC的API,相当于是对数据库操作的抽象的扩展,算作桥接模式的抽象部分;而具体的接口实现是由驱动来完成的,驱动这边自然就相当于桥接模式的实现部分了。而桥接的方式,不再是让抽象部分持有实现部分,而是采用了类似于工厂的做法,通过DriverManager来把抽象部分和实现部分对接起来,从而实现抽象部分和实现部分解耦
java.lang.Runable和线程池
解释和代码Runnable:任务抽象,也就是“命令”;线程池通过submit,execute调用
职责链模式 jdk中的应用jsp servlet 的 Filter
解释和代码多个过滤器过滤,满足条件则跳转入下一个过滤器
中介者模式 jdk中的应用线程池的executer.execute方法
我觉得mvc模式可能更好理解
Controller作为view和model的中介。使model和view透明化转换
享元模式 jdk中的应用java.lang.String
解释和代码享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。String的常量池正是如此
解释器模式 jdk中的应用java.util.Pattern
java.text.Normalizer
java.text.Format
这个模式通常定义了一个语言的语法,然后解析相应语法的语句。简单地说就是规定了格式
访问者模式 jdk中的应用javax.lang.model.element.AnnotationValue和AnnotationValueVisitor
javax.lang.model.element.Element和ElementVisitor
javax.lang.model.type.TypeMirror和TypeVisitor
好像都没用过。。。。以后补上
空对象模式 jdk中的应用java.util.Collections#emptyList()
java.util.Collections#emptyMap()
java.util.Collections#emptySet()
一个空对象取代 NULL
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71315.html
摘要:到年将提供修复和安全更新。中期版本将每六个月发布一次。将扩展类文件格式以支持新的常量池形式。将提供一个低开销的数据收集框架,用于对应用程序和进行故障排除。项目负责人表示,维护成本和低使用率并不能证明其保留是合理的。将是第一个获得支持的平台。 Java JDK 11删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能。 Java Development Kit(J...
摘要:是一个倡议,它提倡提供一种带有非阻塞背压的异步流处理的标准。是标准的实现之一。的实现细节请求响应的与请求响应的暴露为是请求的的消费者是响应的的生产者内部的内部 北京时间 9 月 26 日,Oracle 官方宣布 Java 11 正式发布 一、JDK HTTP Client介绍 JDK11中的17个新特性 showImg(https://segmentfault.com/img/remo...
摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。项目主要基于捐赠的源代码。 本文来自于我的慕课网手记:Java编程中那些再熟悉不过的知识点,转载请保留链接 ;) 1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高。因为类调用时需要实例...
摘要:近期在阅读最新几版的官方文档过程中发现不少术语不清之处特发此文总结以下的术语大量在官方文档中直接出现且直接如基本词语一样使用不理解它们会严重影响阅读自适应自旋锁自适应自旋锁是一个允许线程在特定点自旋等待特定事件发生而不是直接进行并等待该事件 近期在阅读JAVA最新几版的官方文档过程中发现不少术语不清之处,特发此文总结.以下的术语大量在官方文档中直接出现,且直接如基本词语一样使用,不理解...
摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。 showImg(https://segmentfault.com/img/bVbsjCK?w=800&h=450); 一、面向对象和面向过程的区别 面向过程优点: 性能比面向对象高,因为类调用时需要实...
阅读 2105·2021-09-27 14:04
阅读 1856·2019-08-30 15:55
阅读 1680·2019-08-30 13:13
阅读 1048·2019-08-30 13:07
阅读 2727·2019-08-29 15:20
阅读 3172·2019-08-29 12:42
阅读 3268·2019-08-28 17:58
阅读 3571·2019-08-28 17:56