脚本宝典收集整理的这篇文章主要介绍了设计模式在jdk中的应用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
前言
最近重学设计模式,而且还有很多源码要看。所以就想一举两得。从源码中寻找设计模式。顺便还可以看看源码。。。
本文只是寻找设计模式在java中的应用。优缺点就不细说了。而且也不可能将jdk中所有涉及设计模式的例子都举出来。希望大家积极评论。来补全这一块
工厂模式
jdk中的应用
解释和代码
线程池中有线程创建工厂。应用了工厂模式
策略模式
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中的应用
解释和代码
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
@H_985_126@备忘录模式 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
以上是脚本宝典为你收集整理的设计模式在jdk中的应用全部内容,希望文章能够帮你解决设计模式在jdk中的应用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。