我对 Delegate-Service 和 DAO 设计模式有疑问。我们的团队认为我们将为 DAOFactory 和 DAO 对象使用单例模式。DAOFactory 将包含所有可用的 DAO 作为其属性,并在需要时提供它们。
现在我们有一个疑问,Service 说,例如 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();
}
}
哪种方法更好,在哪些情况下?