我想到了一个简单的问题: 我有我的 DAOFactory 类:
public class DAOFactory {
public static UserDAO createUserDAO() {
return new UserDAO();
}
public static AdminDAO createUserDAO() {
return new AdminDAO();
}
//etc etc
}
通过这种方式(据我所知这是标准的),每次有人请求 DAO 时,都会创建一个新实例。 实际上,每个 DAO 不需要有多个实例,除非我遗漏了一些东西。 :D
那么,我们为什么不这样做呢?
public class DAOFactory {
/* eventually we could use lazy initialization */
private static UserDAO userDAO = new UserDAO();
private static UserDAO AdminDAO = new AdminDAO();
//etc etc
public static UserDAO createUserDAO() {
return userDAO;
}
public static AdminDAO createUserDAO() {
return adminDAO;
}
//etc etc
}
就性能和内存而言,前者和后者有什么区别? 我想,实际上,对于 DAOFactory 的客户端来说,这两种实现没有区别。
最佳答案
基本上,如果您的 DAO 类是不可变的或无状态的,那么您可以做到这一点,但如果不是,您必须使 DAO 类线程安全,如果多个线程访问同一个对象并扰乱其状态,它可以创建失败。
(在单线程环境中,你写的内容是可以接受的,但是当你编写DAO模式时,我确定它不是单线程的)
那么为什么我们不这样做,为什么不一样:线程安全成为一个问题。
关于java - DAO工厂 : return a new instance or always the same?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319707/