假设我有一个User
类和两个子类Employee
和Customer
。我将此层次结构实现为DB中的每个层次表,其中包含用于指定用户类型的列。查询此表时,我需要返回正确类型的对象。
我是否需要针对每种类型的对象(例如CustomerDAO
或EmployeeDAO
)使用单独的DAO,因此每个对象都会返回各自的Customer
和Employee
对象。如果是这样,如何从DAOFactory
获取它们而不使用:
if(type.equlas('customer'))
return customerDao;
else
retrun employeeDao;
因为实施User
的类型可能会发生变化,我不想每次都改变条件。
或者还有其他方法吗?任何想法都将不胜感激。
注意:我没有使用任何ORM框架,也没有计划使用它。
答案 0 :(得分:0)
如果每种类型的持久性代码相同,那么您可以拥有1个通用DAO。
所以你的用户dao可能是这样的:
interface DAO<T, ID> {
T create(T t);
T read(ID id);
T update(T t);
void delete(T t);
}
class UserDAO<T extends User> implements DAO<T> {
// Your methods for crud operations will be limited to types of User.
}
然后,您的工厂类可以通过指定正确的类型来实例化正确的DAO。
class DAOFactory {
public UserDAO<Employee> getEmployeeDAO() {
return new UserDAO<Employee> ();
}
}
问候
优素福