0
考虑下面的简单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数据源无关,即哪个工厂可以是A,B或C,而认证源X或Y.
从界面设计的角度来看,认证非常适合AccountDAO。但从实施的角度来看,我感到不舒服。
什么是更好的设计将提供清晰的数据访问层接口和实现?
同意,身份验证不应该在DAO中。 DAO应该只提供认证的原始信息。 – Rustam 2012-01-26 14:58:25