专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java Web开发

DaoFactory的有关问题!求教

发布时间:2010-05-31 03:03:57 文章来源:www.iduyao.cn 采编人员:星星草
DaoFactory的问题!求教!
package org.yeeku.factory;

import org.yeeku.dao.base.Dao;
import org.yeeku.consttool.*;

import org.dom4j.*;
import org.dom4j.io.*;

import java.util.*;
import java.io.*;


public class DaoFactory
{
  private Map<String , Dao> daoMap = new HashMap<String , Dao>(); 

  private static DaoFactory df;

  private DaoFactory()throws Exception
  {
  Document doc = new SAXReader().read(new File(ConstantsUtil.realPath + "\\daoContext.xml"));
  Element root = doc.getRootElement();
  List el = root.elements();
  for (Iterator it = el.iterator();it.hasNext() ; )
  {
  Element em = (Element)it.next();
  String id = em.attributeValue("id");
  String impl = em.attributeValue("class");
  Class implClazz = Class.forName(impl);
  Dao d = (Dao)implClazz.newInstance();
  daoMap.put(id , d);  
  }
  }

  public static DaoFactory instance()throws Exception
  {
  if (df == null)
  {
  df = new DaoFactory(); 
  }
  return df;
  }

  public Dao getDao(String id)
  {
  return daoMap.get(id);
  }
}
这段代码是STRUTS2和HIBERNATE里的,但我实在是看不出来他的作用,请各位高手指教!
最好能把每句代码,为什么说一下!好的话,我在加分!多谢!


------解决方案--------------------
//这个好像是自己手动的去读XML文件
package org.yeeku.factory; 

import org.yeeku.dao.base.Dao; 
import org.yeeku.consttool.*; 

import org.dom4j.*; 
import org.dom4j.io.*; 

import java.util.*; 
import java.io.*; 


public class DaoFactory 

private Map <String , Dao> daoMap = new HashMap <String , Dao>(); 

private static DaoFactory df; 

private DaoFactory()throws Exception 

Document doc = new SAXReader().read(new File(ConstantsUtil.realPath + "\\daoContext.xml")); //读XML文件
Element root = doc.getRootElement(); //得到xml根结点
List el = root.elements(); //得到根结点下的所有元素集合
for (Iterator it = el.iterator();it.hasNext() ; ) //读取某一子结点下的结点

Element em = (Element)it.next(); 
String id = em.attributeValue("id"); //得到属性结点 名为ID
String impl = em.attributeValue("class"); //得到属性结点 名为class
Class implClazz = Class.forName(impl); //加载驱动属性结点 名为class的值
Dao d = (Dao)implClazz.newInstance(); //创建这个类的实例
daoMap.put(id , d); //放入Map中






public static DaoFactory instance()throws Exception 

if (df == null) 

df = new DaoFactory(); 

return df; 




public Dao getDao(String id) 

return daoMap.get(id); 

}
------解决方案--------------------
Java code
package org.yeeku.factory;

import org.yeeku.dao.base.Dao;
import org.yeeku.consttool.*;

import org.dom4j.*;
import org.dom4j.io.*;

import java.util.*;
import java.io.*;


public class DaoFactory
{
    private Map <String , Dao> daoMap = new HashMap <String , Dao>();

    private static DaoFactory df;

    private DaoFactory()throws Exception
    {//读取xml文件
        Document doc = new SAXReader().read(new File(ConstantsUtil.realPath + "\\daoContext.xml"));
        Element root = doc.getRootElement();
        List el =  root.elements();
        //循环遍历所有xml元素
        for (Iterator it = el.iterator();it.hasNext() ; )
        {
            Element em = (Element)it.next();
            //获得id,class属性
            String id = em.attributeValue("id");
            String impl = em.attributeValue("class");
            //通过反射加载class属性指定的类
            Class implClazz = Class.forName(impl);
            //实例话该类,该类一定要实现Dao接口。
            Dao d = (Dao)implClazz.newInstance();
            //把id作为key,dao作为value放到map里面
            daoMap.put(id , d);           
        }
    }
    //没有实例话就先实例化,然后就返回factory实例,否则直接返回facotory实例
    public static DaoFactory instance()throws Exception
    {
        if (df == null)
        {
            df = new DaoFactory();
        }
        return df;
    }
    //根据id 来取dao,对应的语句->>>daoMap.put(id , d);
    public Dao getDao(String id)
    {
        return daoMap.get(id);
    }
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: