具体是层次优先还是模块优先?
举个简单例子,com.公司名.项目名称.下一层的包就应该是
1.层优先的话:
com.xxx.xxx.action
com.xxx.xxx.service
com.xxx.xxx.dao
2.模块优先的话:
com.xxx.xxx.user
com.xxx.xxx.card
com.xxx.xxx.person
下面是网友的一个回答,我认为比较合理:
模块划分,还是层级划分,要考虑一些客观情况,如下:
1、如果涉及团队协作开发,建议按模块划分。因为业务模块之间的耦合性相对于层级的耦合性要低,这样程序员在开发模块时,基本上要开发action、service、orm,这样开发的接触面比较全,而且基本上不需要与其它模块进行交互,减少沟通交流时间,能提高开发效率。如果按照层级划分,那么多人开发时,会存在action依赖service,而service由别人开发,会涉及到交流、沟通(如:action需要的业务方法,需要先告诉service开发人员……等等若干情况)
2、如果独立开发,只要结构清晰,后期维护方便,怎么划分都可以。
目前我经常遇到的结构如下(base名称可以换为core、frameword均可以,看习惯了):
com.公司名.项目名称.base(基础模块顶级包)
com.公司名.项目名称.base.security(安全相关)
com.公司名.项目名称.base.remote(远程服务相关)
com.公司名.项目名称.base.config(配置相关,提供业务模块配置信息)
com.公司名.项目名称.base.web(web相关,提供通用的拦截器、监听器、标签等等)
com.公司名.项目名称.base.utils(工具包)
下面这个module是比较大的模块,可以在module中继续细分
com.公司名.项目名称.modules.module1
com.公司名.项目名称.modules.module2
com.公司名.项目名称.modules.module3
这样的包结构,对于20左右的开发团队来说,目前感觉还不错,仅供参考。