工厂设计模式
package cn.itcast.utils;
public class DaoFactory {
private static final DaoFactory factory = new DaoFactory();
private DaoFactory() {};
public static DaoFactory getInstance() {
return factory;
}
public <T> T createDao(String className, Class<T> clazz) {
try {
T t = (T) Class.forName(className).newInstance();
return t;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
private CategoryDao dao = DaoFactory.getInstance().createDao("cn.itcast.dao.impl.CategoryDaoImpl", CategoryDao.class);
private BookDao bdao=DaoFactory.getInstance().createDao("cn.itcast.dao.impl.BookDaoImpl", BookDao.class);
private UserDao udao=DaoFactory.getInstance().createDao("cn.itcast.dao.impl.UserDaoImpl", UserDao.class);
private OrderDao odao=DaoFactory.getInstance().createDao("cn.itcast.dao.impl.OrderDaoImpl", OrderDao.class);
注意:第二个参数一定是接口.class 而不能是impl.class.