JDK 源码 阅读 - 2 - 设计模式 - 创建型模式

A.创建型模式

  1. 抽象工厂(Abstract Factory)

    javax.xml.parsers.DocumentBuilderFactory

DocumentBuilderFactory通过FactoryFinder实例化具体的Factory.

使用例子:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("xxx.xml"));

  javax.xml.transform.TransformerFactory

 使用例子:
 StreamSource source = new StreamSource(...);
 StreamSource stylesource = new StreamSource(...);

 TransformerFactory factory = TransformerFactory.newInstance();
 Transformer transformer = factory.newTransformer(stylesource);

 StreamResult result = new StreamResult(System.out);
 transformer.transform(source, result)

  javax.xml.xpath.XPathFactory

The structure is almost the same as the previous two.

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
XPathExpression expr = xpath.compile(XPATH_EXPRESSION_STRING);
Object result = expr.evaluate(Object item, QName returnType);

2.生成器模式(Builder)

java.lang.Appendable

 java.lang.StringBuilder#append()

 java.lang.StringBuffer#append()

这里我们看到状态的转换操作都会返回原来的类型的对象,这样就可以构建生成链。

 java.nio.ByteBuffer#put() (CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer 还有 DoubleBuffer)

参见上例。

3.工厂方法(Factory method)

 java.util.Calendar#getInstance()

工厂方法的构造方法就在所要生成的类型上。 这个抽象工厂有很大不同。

其它的可参见:

 java.util.ResourceBundle#getBundle()

 java.text.NumberFormat#getInstance()

 java.nio.charset.Charset#forName()

 java.net.URLStreamHandlerFactory#createURLStreamHandler(String)

4.原型模式(Prototye)

5.单例模式(Singleton)

 java.lang.Runtime#getRuntime()

 java.awt.Desktop#getDesktop()



JDK 源码 阅读 - 2 - 设计模式 - 创建型模式

时间: 2024-10-08 13:31:58

JDK 源码 阅读 - 2 - 设计模式 - 创建型模式的相关文章

JDK 源码 阅读 - 4 - 设计模式 - 行为型模式

1.职责链模式(Chain of responisibility) java.util.logging.Logger#log() javax.servlet.Filter#doFilter() 2.命令模式(Command) java.lang.Runnable java.util.concurrent.Callable 3.解释器模式(Interpreter) java.text.Format 4.迭代器模式(Iterator) java.util.Iterator java.util.Enu

JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

1.适配器(Adapter) java.util.Arrays$ArrayList(java.util.Arrays#asList()):  这里要特别注意,这里的ArrayList是Arrays的内部类不是java.util.ArrayList.这里的ArrayList是外部不可见的,用来把一个array适配成List.   Sample: String a[] = new String[]{"123","abc","xyz","dd

JDK 源码 阅读 - 2 - 设计模式

A.创建型模式 抽象工厂(Abstract Factory) javax.xml.parsers.DocumentBuilderFactory

JDK源码阅读(一):Object源码分析

最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 hashCode 方法 toString 方法 finalize 方法 registerNatives 方法 1. Object结构图 2. 类构造器 ??类构造器是创建Java对象的方法之一.一般我们都使用new关键字来进行实例,还可以在构造器中进行相应的初始化操作. ??在一个Java类中必须存在一个

JDK源码阅读(三):ArraryList源码解析

今天来看一下ArrayList的源码 目录 介绍 继承结构 属性 构造方法 add方法 remove方法 修改方法 获取元素 size()方法 isEmpty方法 clear方法 循环数组 1.介绍 一般来讲文章开始应该先介绍一下说下简介.这里就不介绍了 如果你不知道ArrayList是什么的话就没必要在看了.大致讲一下一些常用的方法 2.继承结构 ArrayList源码定义: ArrayList继承结构如下: Serializable 序列化接口 Cloneable 前面我们在看Object源

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

jdk源码阅读-HashMap

前置阅读: jdk源码阅读-Map : http://www.cnblogs.com/ccode/p/4645683.html 在前置阅读的文章里,已经提到HashMap是基于Hash表实现的,所以在讲解HashMap之前 ,有必要提前了解下Hash的原理. 参考<算法导论><算法>

设计模式——创建型模式

简单的说我们可以把23种设计模式可以归为三大类,分别是创建型模式.结构型模式和行为型模式. 今天,首先看一下创建型模式.创建型设计模式包括5种:单例模式(Singleton).工厂方法模式(Factory Method).抽象工厂模式(Abstract Factory).建造者模式(Builder).原型模式(Prototype).  1.单例模式(Singleton)        1)简介 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结

C#设计模式-创建型模式(转)

一.简单工厂模式 简单工厂模式Simple Factory,又称静态工厂方法模式.它是类的创建模式.是由一个工厂对象决定创建出哪一种产品类的实例,是不同的工厂方法模式的一个特殊实现. 优点: u 模式的核心是工厂类,该类中含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅负责"消费"产品. u 简单工厂模式实现了对责任的分割. 缺点: u 当产品类有复杂的多层次等级结构时,工厂类只有它自己.以不变应万变. u 模式中工厂类集中了所