资讯专栏INFORMATION COLUMN

设计模式在jdk中的应用

dingding199389 / 1743人阅读

摘要:本文只是寻找设计模式在中的应用。来补全这一块工厂模式中的应用包线程池解释和代码线程池中有线程创建工厂。状态模式中的应用解释和代码根据一个指针的状态而改变自己的行为适配器模式中的应用解释和代码将一个类的接口转换成客户希望的另外一个接口。

前言

最近重学设计模式,而且还有很多源码要看。所以就想一举两得。从源码中寻找设计模式。顺便还可以看看源码。。。
本文只是寻找设计模式在java中的应用。优缺点就不细说了。而且也不可能将jdk中所有涉及设计模式的例子都举出来。希望大家积极评论。来补全这一块

工厂模式 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是基于内存级别的复制。不是用构造方法。创建重复对象性能更高

模板模式 jdk中的应用

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

备忘录模式 jdk中的应用 解释和代码 组合模式 jdk中的应用

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来把抽象部分和实现部分对接起来,从而实现抽象部分和实现部分解耦

命令模式 jdk中的应用

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

    摘要:到年将提供修复和安全更新。中期版本将每六个月发布一次。将扩展类文件格式以支持新的常量池形式。将提供一个低开销的数据收集框架,用于对应用程序和进行故障排除。项目负责人表示,维护成本和低使用率并不能证明其保留是合理的。将是第一个获得支持的平台。 Java JDK 11删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能。 Java Development Kit(J...

    Ethan815 评论0 收藏0
  • JDK11新增HttpClient谈谈非阻塞模型

    摘要:是一个倡议,它提倡提供一种带有非阻塞背压的异步流处理的标准。是标准的实现之一。的实现细节请求响应的与请求响应的暴露为是请求的的消费者是响应的的生产者内部的内部 北京时间 9 月 26 日,Oracle 官方宣布 Java 11 正式发布 一、JDK HTTP Client介绍 JDK11中的17个新特性 showImg(https://segmentfault.com/img/remo...

    pingan8787 评论0 收藏0
  • Java编程中那些再熟悉不过的知识点(持续更新)

    摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。项目主要基于捐赠的源代码。 本文来自于我的慕课网手记:Java编程中那些再熟悉不过的知识点,转载请保留链接 ;) 1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高。因为类调用时需要实例...

    taowen 评论0 收藏0
  • 54个JAVA官方文档重要术语

    摘要:近期在阅读最新几版的官方文档过程中发现不少术语不清之处特发此文总结以下的术语大量在官方文档中直接出现且直接如基本词语一样使用不理解它们会严重影响阅读自适应自旋锁自适应自旋锁是一个允许线程在特定点自旋等待特定事件发生而不是直接进行并等待该事件 近期在阅读JAVA最新几版的官方文档过程中发现不少术语不清之处,特发此文总结.以下的术语大量在官方文档中直接出现,且直接如基本词语一样使用,不理解...

    longmon 评论0 收藏0
  • 吃透这套Java面试题,拿offer成功率再翻一番

    摘要:语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。有针对不同系统的特定实现,,,目的是使用相同的字节码,它们都会给出相同的结果。 showImg(https://segmentfault.com/img/bVbsjCK?w=800&h=450); 一、面向对象和面向过程的区别 面向过程优点: 性能比面向对象高,因为类调用时需要实...

    elva 评论0 收藏0

发表评论

0条评论

dingding199389

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<