DAO包结构
问题描述
我正在使用JDBC使用Java(没有Spring,Hibernate或其他任何东西)编写一些简单的DAO。
将实现DAO与它们的接口放在同一包中还是放在子包中更好?
示例:
com.mycompany.myproject.dao.MyDao
com.mycompany.myproject.dao.MyDaoImpl
OR
com.mycompany.myproject.dao.MyDao
com.mycompany.myproject.dao.impl.MyDaoImpl
如果您建议子软件包结构,那么建议使用什么作为子软件包名称? .impl? .sql? .jdbc?
实际上,我不会有多个实现。我是否对此工程过度了?
解决方法:
[设计应用程序时,没有standard包进行结构化的方法,经验通常是帮助每个人确定适合我们包的名称的原因。
关于将接口的实现打包在同一个包中或在另一个不同的包中,只需考虑一下Java本身的结构:通常,实现类与接口的打包在同一包中,但并非总是如此。
如果您将要具有相同DAO的多个实现,那么将它们结构化为.jdbc
,.jpa
或.jdo
子包将很有意义。如果您只打算实现一个实现,那么您列举的两个选项都将以某种方式有意义(相同的程序包或.impl
子程序包)。
关于过度工程,我建议您此article。即使您将只实现DAO的一种实现,将它们定义为接口和实现也是有意义的,因为这将有助于您在将来的将来为其他框架重写DAO,同时使用它们保持不变。
最后要由您(或您和您的同伴)达成共识并做出在您的特定情况下更有意义的决定。
编辑
一个应用程序通常每个DAO接口只有一个实现,并且根本不会过度设计,对于JPA和JDO实施相同的DAO接口完全没有道理。使用接口/实现模式的某些目的是简化重构,通过模拟对象进行测试等。
P.S .:我通常依靠JDepend将我的应用程序类分发到程序包中,从而尽可能地避免循环。
上一篇:If语句中的逻辑错误