package five.test.daoFaction;
import java.io.InputStream;
import java.util.Properties;
import five.dao.UserDao;
public class DaoFactory {
// 简单工厂模式 && 单例模式
private static UserDao ud = null;
private static DaoFactory instance = new DaoFactory();
// 单例模式 构造方法 私有
private DaoFactory(){
try {
Properties properties = new Properties();
//InputStream inputStream = new FileInputStream(new File("src/daoconfig.properties"));
//通过ClassLoader 来得到配置的文件
InputStream inputStream = DaoFactory.class.getClassLoader()
.getResourceAsStream("daoconfig.properties");
properties.load(inputStream);
String className = properties.getProperty("userDaoClass");
Class myClass = Class.forName(className);
ud = (UserDao) myClass.newInstance();
} catch (Exception e) {
// 如果再读取配置文件时出错,抛出系统启动异常
throw new ExceptionInInitializerError(e);
}
}
public static DaoFactory getInstance() {
return instance;
}
public UserDao getUserDao() {
return ud;
}
}
package five.test;
import java.sql.Date;
import five.dao.UserDao;
import five.domain.User;
import five.test.daoFaction.DaoFactory;
public class UserDaoTest {
public static void main(String[] args) {
User user = new User(20, null, "20pass", null, 0);
user.setBrithday(new Date(0));
user.setName("dao name1");
user.setMonney(1000.0f);
//依赖 具体实现[new UserDaoImpl();]
//对策 工厂模式 通过配置文件
//存在修改代码的可能, 在不修改代码的前提下
//就只能修改 配置文件
//UserDao ud = new UserDaoImpl();
UserDao ud = DaoFactory.getInstance().getUserDao();
ud.addUser(user);
user = ud.getUser(20);
System.out.print(user.getPassword());
}
}