【发布时间】:2012-01-12 02:59:57
【问题描述】:
考虑以下简单的 DAO 示例:
public abstract class DAOFactory
{
public abstract AccountDAO getAccountDAO();
public abstract MessageDAO getMessageDAO();
public static DAOFactory getDAOFactory(int whichFactory)
{
// depending on whichFactory
return new SpecificDAOFactory();
}
}
public interface AccountDAO
{
public void add(Account account);
public void delete(Account account);
public int authenticate(Account account); // another source!
}
public interface MessageDAO
{
//other methods
}
上述所有方法都必须使用相同的数据源来实现,除了 AccountDAO.authenticate()。
身份验证信息在其他数据源中可用,并且应该可以依次插入(例如,可以是 SQL、LDAP 等)。同时,鉴权数据源独立于DAO数据源,即whichFactory可以是A、B或C,而鉴权源是X或Y。
从界面设计的角度来看,身份验证非常适合 AccountDAO。但从实施的角度来看,我感到不舒服。
提供清晰的数据访问层接口和实现的更好设计是什么?
【问题讨论】: