首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Java 惯用API的运用,效率及技巧十一

2012-06-27 
Java 常用API的运用,效率及技巧十一常用设计模式1.Singleton模式Singleton模式主要作用是保证在Java应用程

Java 常用API的运用,效率及技巧十一

常用设计模式

1.Singleton模式

Singleton模式主要作用是保证在Java应用程序中,一个Class只有一个实例存在。一般有两种方法:

private SingleClass() {}

public static String getMethod1() {}

public static ArrayList getMethod2() {}

private staitc SingleClass _instance = null;private SingleClass() {}public static SingleClass getInstance() { if (_instance == null) { _instance = new SingleClass(); } return _instance;}public String getMethod1() {}public ArrayList getMethod2() {}

?

// 1. Abstract Factory模式SAXParserFactory spf = SAXParserFactory.newInstance();String validation = System.getProperty ("javax.xml.parsers.validation", "false");if (validation.equalsIgnoreCase("true")) {spf.setValidating (true);}// 2. Factory模式SAXParser sp = spf.newSAXParser();parser = sp.getParser();parser.setDocumentHandler(this);parser.parse (uri);

1. SAXParserFactory中的静态方法newInstance()根据系统属性javax.xml.parsers.SAXParserFactory不同的值生成不同的SAXParserFactory对象spf。然后SAXParserFactory对象又利用方法newSAXParser()生成SAXParser对象。

注意:

SAXParserFactory 的定义为:

public abstract class SAXParserFactory extends java.lang.Object

SAXParserFactoryImpl 的定义为:

public static SAXParserFactory newInstance() {String factoryImplName = null;try {factoryImplName =System.getProperty("javax.xml.parsers.SAXParserFactory","com.sun.xml.parser.SAXParserFactoryImpl");} catch (SecurityException se) {factoryImplName = "com.sun.xml.parser.SAXParserFactoryImpl";}SAXParserFactory factoryImpl;try {Class clazz = Class.forName(factoryImplName);factoryImpl = (SAXParserFactory) clazz.newInstance();} catch (ClassNotFoundException cnfe) {throw new FactoryConfigurationError(cnfe);} catch (IllegalAccessException iae) {throw new FactoryConfigurationError(iae);} catch (InstantiationException ie) {throw new FactoryConfigurationError(ie);}return factoryImpl;}

??

2. newSAXParser() 方法在SAXParserFactory定义为抽象方法,

SAXParserFactoryImpl继承了SAXParserFactory,它实现了方法newSAXParser():

public SAXParser newSAXParser() throws SAXException, ParserConfigurationException {SAXParserImpl saxParserImpl = new SAXParserImpl(this);return saxParserImpl;}

?

注意:

SAXParserImpl的定义为:

public class SAXParserImpl extends javax.xml.parsers.SAXParser

SAXParserImpl的构造函数定义为:

public SAXParserImpl(SAXParserFactory spf) throws SAXException, ParserConfigurationException {super();this.spf = spf;if (spf.isValidating ()) {parser = new ValidatingParser();validating = true;} else {parser = new Parser();}if (spf.isNamespaceAware ()) {namespaceAware = true;throw new ParserConfigurationException("Namespace not supported by SAXParser");}}

??

热点排行