2012-07-30 88 views
0

什么应该是包的层次结构?我的包装结构是否正确?

com.xyz.DAO 
    IDAO   (interface) 
    IPersonDAO  (interface) 
    IDepartmentDAO (interface) 

com.xyx.DAO.impl 
    PersonDAO extends GenericDAO implements IPersonDAO 
    DepartmentDAO extends GenericDAO implements DepartmentDAO 
    GenericDAO implements IDAO (abstract class) 
    DAOFactory 

这个软件包结构是否合适?

+0

我个人移动'DAOFactory'一个级别更高'com.xyz.DAO'。 – maksimov 2012-07-30 16:50:42

+0

我个人更喜欢在名称前面没有“I”的接口,按照标准(没有大写)和DAO实现按照每个持久化技术名称分隔的接口,例如:用于hibernate实现的'com.xyx.dao.hibernate'或用于JDBC DAO的'com.xyx.dao.jdbc' – 2012-07-30 16:54:05

回答

3

我其实是反对层驱动的包装而是我建议特征驱动方法:

com.xyz 
    IDAO   (interface) 
    GenericDAO implemts IDAO (abstract class) 
    DAOFactory 
com.xyz.person 
    IPersonDAO  (interface) 
    PersonDAO extends GenericDAO implements IPersonDAO 
com.xyx.department 
    IDepartmentDAO (interface) 
    DepartmentDAO extends GenericDAO implemts DepartmentDAO 

的理由是:你会更经常希望有相关所有类人功能在一个地方。通常你不需要所有的DAO类。

UML

+1

这是一个有趣的策略...... :) – SiB 2012-07-30 16:59:33

+0

Shoul IDepartmentDAO也extedn IDAO? – user978939 2012-07-30 17:02:10

+0

是的!它应该... – SiB 2012-07-30 17:03:04