1. 包结构

项目的包结构统一采用 组织域名.模块名 的方式,

例如:铭软的basic模块 net.mingsoft.basicmdiy模块 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. 设计原则

  • 每个层次向外公开接口,但是隐藏内部细节

  • 下一层为上一层服务,但不使用上层的服务

  • 不同层之间通过实体类传输数据

Copyright © mingsoft.net 2021 all right reserved,powered by Gitbook该文件修订时间: 2024-09-03 14:06:28

results matching ""

    No results matching ""

    results matching ""

      No results matching ""