Delegate-Service と DAO の設計パターンには疑問があります。私たちのチームは、DAOFactory と DAO オブジェクトにシングルトン パターンを使用すると考えました。DAOFactory は、利用可能なすべての DAO をその属性として含み、必要なときにそれらを提供します。
ここで、AuthenticateSerivce などの Service に必要なすべての DAO (UserDAO、RoleDAO など) を属性として含める必要があるかどうかについて、1 つの疑問があります。または必要に応じて get**DAO() を呼び出す必要があり、独自の属性として設定する必要はありません (添付の Java ファイル)。
コードスニペット:
public class AuthenticateService {
UserDao userDao;
RoleDao roleDao;
public AuthenticateService(){
DaoFactory daoFactory = DaoFactory.getInstance();
userDao = daoFactory.getUserDao();
roleDao = daoFactory.getRoleDao();
}
}
public class DaoFactory {
private static DaoFactory instance = null;
UserDao userDao;
RoleDao roleDao;
AnnualScheduleDao annualScheduleDao;
WeeklyScheduleDao weeklyScheduleDao;
ProgramSlotDao programSlotDao;
private DaoFactory (){
// Authenticate
userDao = new UserDaoImpl();
roleDao = new RoleDaoImpl();
// Schedule
annualScheduleDao = new AnnualScheduleDaoImpl();
weeklyScheduleDao = new WeeklyScheduleDaoImpl();
programSlotDao = new ProgramSlotDaoImpl();
}
}
どのアプローチが優れており、どのような状況で使用されますか?