J2EE项目中基本都是遵循分层架构的,自然包结构也是基于分层的。DAO层有DAO package。service 层有service package。在这些包下面再根据模块划分子包。
我觉得另一种可行的方案是根据模块划分包,如果包比较复杂,比如有超过十个的类,再根据层来划分子包。一般的模块比较简单,无需划分子包。
从高内聚,低偶合的原则来说,这样划分具有更高的内聚性。如果按层划分。其实同层的类并入多大的关系。考虑一下DAO层。这些DAO之间有多少联系?
新划分方法的好处是如果需要修改某个模块,修改的地方相对集中。因为都位于一个包内。
现在分层架构已经非常普遍,没有必要在包的划分上体现分层架构。在类名上体现分层架构即可。就是说分层架构无需通过包结构来体现。
新的划分方案可能有一个问题。各个模块之间可能有实现上的冗余。如果采用这个方案,需要在这点上采取预防措施。
当然这还是想法,没有在项目中实践。希望大家能指出这个方法可能带来的问题。