设计模式-----问题一
来源:互联网 发布:数据结构出栈算法程序 编辑:程序博客网 时间:2024/05/23 00:08
==============================================================================
在读取xml时候用了单利模式,里面有一个构造方法的 变量赋值问题,如果不加this,是无法进行赋值的
==============================================================================
package com.nusof.xml.tools;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* <p>
* 类说明:
* </p>
*
* @version 1.0
* <p>
* 文件名: XmlConfigReader.java
* </p>
* <p>
* 创建人及时间: zcw 2011-5-4
* </p>
* <p>
* 修改人:
* </p>
* <p>
* 修改时间:
* </p>
* <p>
* 修改描述:
* </p>
*/
public class XmlConfigReader {
// (延迟加载 懒汉式)
private static XmlConfigReader instance = null;
public static synchronized XmlConfigReader getInstance() {
if (instance == null) {
instance = new XmlConfigReader();
}
return instance;
}
// 保存regex配置
private List<RegexPatternConfig> regexPatternConfigs = new ArrayList<RegexPatternConfig>();
public List<RegexPatternConfig> getRegexPatternConfigs() {
return regexPatternConfigs;
}
@SuppressWarnings("unchecked")
public XmlConfigReader() {
SAXReader reader = new SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("ajax-config.xml");
try {
Document doc = reader.read(in);
// 取得regex的配置
List<RegexPatternConfig> regexPatternConfigs = new ArrayList<RegexPatternConfig>();
Element websites = doc.getRootElement();
for (Iterator<Element> it = websites.elementIterator(); it
.hasNext();) {
/**
* id + RegexPatternConfigChild
*/
RegexPatternConfig regexPatternConfig = new RegexPatternConfig();
/**
* 两个正则表达式
*/
RegexPatternConfigChild regexPatternConfigChild = new RegexPatternConfigChild();
/**
* 每个网站
*/
Element website = it.next();
/**
* 网站id
*/
String websiteId = website.attributeValue("website-id");
// System.out.println("取得网站id" + websiteId);
regexPatternConfig.setWebsiteId(Integer.valueOf(websiteId));
/**
* 临时变量保存正则表达式
*/
Regex scriptRegex = new Regex();
/**
* ===============================================* script-regex
* begin ===============================================*
*/
Element scriptRegexElt = (Element) website
.selectObject("./script-regex/regex");
/**
* script-regex 网页url正则
*/
String scriptRegexStr = scriptRegexElt.getStringValue();
/**
* 组号
*/
int scriptGroupNo = Integer.valueOf(scriptRegexElt
.attributeValue("group"));
/**
* 匹配模式
*/
String scriptRunType = scriptRegexElt.attributeValue("run");
scriptRegex.setRegexStr(scriptRegexStr);
scriptRegex.setGroup(scriptGroupNo);
scriptRegex.setType(scriptRunType);
regexPatternConfigChild.setScriptRegex(scriptRegex);
// System.out.println(scriptGroupNo);
// System.out.println(scriptRunType);
// System.out.println(scriptRegexStr);
regexPatternConfigChild.setScriptRegex(scriptRegex);
// ========script-regex end===============
/**
* 临时变量保存正则表达式
*/
Regex hitnumRegex = new Regex();
/**
* ===============================================*
* hits-num-regex begin
* ===============================================*
*/
Element hitnumRegexElt = (Element) website
.selectObject("hits-num-regex/regex");
/**
* hitnum-regex 点击数正则
*/
String hitnumRegexStr = hitnumRegexElt.getStringValue();
/**
* 组号
*/
int hitnumGgroupNo = Integer.valueOf(scriptRegexElt
.attributeValue("group"));
/**
* 匹配模式
*/
String hitnumRunType = hitnumRegexElt.attributeValue("run");
hitnumRegex.setRegexStr(hitnumRegexStr);
hitnumRegex.setGroup(hitnumGgroupNo);
hitnumRegex.setType(hitnumRunType);
regexPatternConfigChild.setScriptRegex(hitnumRegex);
// System.out.println(hitnumGgroupNo);
// System.out.println(hitnumRunType);
// System.out.println(hitnumRegexStr);
regexPatternConfigChild.setHitnumRegex(hitnumRegex);
// ===============hits-num-regex begin=============
regexPatternConfig
.setRegexPatternConfigChild(regexPatternConfigChild);
/**
* 添加每个网站点击数的配置this 不能省略
*/
this.regexPatternConfigs.add(regexPatternConfig);
// regexPatternConfigs.add(regexPatternConfig); 这里如果是不加上this是无法进行添加的
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
List<RegexPatternConfig> test = XmlConfigReader.getInstance()
.getRegexPatternConfigs();
for (RegexPatternConfig rc : test) {
System.out.println(rc.getWebsiteId());
System.out.println(rc.getRegexPatternConfigChild().toString());
}
}
}
- 设计模式-----问题一
- 设计模式之问题集锦(一)
- 设计模式--设计原则<一>
- 设计模式汇总(一)
- 系统设计模式一
- 设计模式汇总(一)
- 设计模式读书笔记(一)
- 设计模式(一)
- 设计模式 (一)
- 设计模式探索一
- 设计模式学习(一)
- 设计模式学习《一》
- 设计模式学习(一)
- 设计模式(一)
- 读《设计模式》一
- css设计模式 一
- 设计模式笔录(一)
- 什么是设计模式?(一)
- 该输入什么结束这个循环来着..
- 转:矩阵的本质-运动的描述
- Struts1.X day2
- 生成随机数
- 整理JS和C#实现页面跳转
- 设计模式-----问题一
- SOA
- php-smarty函数-入门案例3
- java-javaweb-dao案例3
- 搞笑dota
- 数据结构(C#)-排序
- 生活琐事
- 万一感情有了变故,要能够承受。
- DX骨骼动画,地形简单的演示