我想到了一个简单的问题:我有我的 DAOFactory 类:
public class DAOFactory {
public static UserDAO createUserDAO() {
return new UserDAO();
}
public static AdminDAO createUserDAO() {
return new AdminDAO();
}
//etc etc
}
这样做(AFAIK 是标准的),每次有人请求 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 的客户端,这两种实现之间没有区别。