【发布时间】:2012-08-21 03:48:41
【问题描述】:
我对 Delegate-Service 和 DAO 设计模式有疑问。我们的团队认为我们将为 DAOFactory 和 DAO 对象使用单例模式。 DAOFactory 将包含所有可用的 DAO 作为其属性,并会在需要时提供它们。
现在我们怀疑服务是否说例如AuthenticateSerivce 应包含所有必需的 DAO,例如UserDAO、RoleDAO 等作为属性?或者它应该根据需要调用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();
}
}
哪种方法更好,在哪些情况下?
【问题讨论】:
标签: design-patterns jakarta-ee