私の頭に浮かんだ簡単な質問: 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 のクライアントに対するこれら 2 つの実装に違いはないと思います。