1. 包结构
项目的包结构统一采用 组织域名.模块名
的方式,
例如:铭软的basic
模块 net.mingsoft.basic
,mdiy
模块 net.mingsoft.mdiy
,
以下描述的都是在 组织域名.模块名
下创建
- 实体
entity
对应包组织域名.模块名.entity
- 业务实体
bean
对应包组织域名.模块名.bean
- 持久化
dao
对应包组织域名.模块名.dao
- 业务
biz
对应包组织域名.模块名.biz
- 业务
biz
实现 对应包组织域名.模块名.biz.impl
- 业务
- 控制
action
对应包组织域名.模块名.action
web
访客访问 对应包组织域名.模块名.action.web
people
会员访问 对应包组织域名.模块名.action.people
- 常量
constant
对应包组织域名.模块名.constant
- 枚举
e
对应包组织域名.模块名.e
- 枚举
- 资源
resources
对应组织域名.模块名.resources
- 工具包
util
对应组织域名.模块名.util
2. 设计说明
代码分层就是让每一块代码专注于自己功能的实现:比如持久化层就只关心持久化的功能,而不去关心实体层那里应该有多少属性。
目前用到的分层有
- 实体层
entity
- 关联业务表名
- 业务实体层
bean
- 通常在
entity
不满足的情况下扩展出来的实体,一般用于方法型参类型定义
- 通常在
- 持久化层
dao
- 持久化层它只关注实体化的工作,只是提供接口
- 对应必须存在dao.xml文件
- 业务层
biz
- 业务层关注一个功能的具体业务,比如注册时你要判读这个用户是否是已经注册过,这个用户填写的资料是符合规范等等
- 实现层
impl
- 生成对应层级下面的接口实现类
- 控制层
action
- 控制层会调用业务层,实现一个具体的功能
- 可以调用了好几个
biz
业务层 - 不推荐直接调用
dao
代码
- 通用工具
util
- 该层包含一些基础的公共工具,在增加工具类前,请优先确定其他工具类中是否已有或可增强拥有此功能,避免重复不利于维护
BasicUtil.*
SpringUtil.*
是底层提供的关键工具了,ParserUtil.*
核心解析freemarker的工具类,具体仔细阅读代码
- 常量
constant
- 定义全局常量与枚举类
- 升级版
upgrade
- 只有在编写store插件使用才用到
3. 设计原则
每个层次向外公开接口,但是隐藏内部细节
下一层为上一层服务,但不使用上层的服务
不同层之间通过实体类传输数据