首先在src下面新建一个配置文件daoconfig.properites
内容如下:userDaoClass=com.mengya.dao.impl.UserDaoJdbcImpl
DaoFactory类的内容如下:
public class DaoFactory {
private static UserDao userDao = null; //UserDao是UserDaoJdbcImpl的接口
private static DaoFactory instance = new DaoFactory();
private DaoFactory() {
try {
Properties prop = new Properties();
InputStream inStream = DaoFactory.class.getClassLoader()
.getResourceAsStream("daoconfig.properties");
prop.load(inStream);
String userDaoClass = prop.getProperty("userDaoClass");
Class clazz = Class.forName(userDaoClass);
userDao = (UserDao) clazz.newInstance();
} catch (Throwable e) {
throw new ExceptionInInitializerError(e);
}
}
public static DaoFactory getInstance() {
return instance;
}
public UserDao getUserDao() {
return userDao;
}
}
说明:private static UserDao userDao = null;
与private static DaoFactory instance = new DaoFactory();位置不能换。
程序执行顺序是首先申明了一个空的userDao,执行new DaoFactory()的时候将userDao实例化了,如果它们的顺序换了则会出错,userDao是null的.
测试:
public class UserDaoTest {
public static void main(String[] args) {
UserDao userDao = DaoFactory.getInstance().getUserDao();
User user = new User();
user.setBirthday(new Date());
user.setName("dao name2");
user.setMoney(1000.0f);
userDao.addUser(user);
System.out.println(user.getId());
}
}