package cn.lnu.factory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//��������Dao������������Daoʵ���࣬cn.lnu.dao.impl.UserDaoJdbcImpl.java��cn.lnu.dao.impl.UserDaoXmlImpl.java����ʹ���ĸ�ͨ�������ļ�
//����ģʽһ��Ҫ���ɵ����ģ���ϣ������daoֻ��һ����������
public class DaoFactory {
private Properties daoConfig=new Properties();
private DaoFactory(){
InputStream in=DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
//�������ļ�����Ϣload��һ��prop������ȥ
try {
daoConfig.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException("�������ļ�ʧ�ܣ�");
}
}
private static DaoFactory instance=new DaoFactory();
public static DaoFactory getInstance(){
return instance;
}
//����dao //UserDao.class
//DepartmentDao.class
public <T> T createDao(Class<T> clazz) {//����Ϊ�ӿ�����,����ʹ�÷��ͣ������㴫�ݽ�������ʲô���͵�T���Ǵ����������͵ģ�Ȼ�صĻ����㴫�ݽ���������
//���ݴ������Ľӿڵ����Ƽ���dao.properties�����ļ��ҵ�����ӿڵ�ʵ����
//1,�õ����ݽ����Ľӿڵ�����
//clazz.getName();//cn.lnu.dao.UserDao.java
String name=clazz.getSimpleName();//��ýӿڵļ������������UserDao
//2,�������ļ��������Ҫʵ�������������
String className=daoConfig.getProperty(name);
try {
Class.forName(className);
T dao=(T) Class.forName(className).newInstance();
return dao;
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}