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