之前我说过一个服务内部的模块划分通常是有业务决定的,而模块的划分是通过分层的思想来实现。本文将会通过一个实际的项目示例来说明一下每一个模块中应该具备哪些内容,主要实现什么样的功能。
开始之前我们首先回顾一下一个服务中的模块大概有一下几层:消息接口层,业务控制层,算法逻辑层,数据模型层,数据适配层,公共处理层等六层。
消息接口(facade层)
理论上facade层不要做任何与业务逻辑相关的工作,同时也要尽可能少的依赖二方包,因为其他服务依赖该facade模块可能会造成二方包的冲突。
接口层:service层
对外接口类包:com.xinhe.api.facade.service.xxx.......
对外数据模型类包:com.xinhe.api.facade.model
对外异常类包:com.xinhe.api.facade.exception
对外枚举类包:com.xinhe.api.facade.enums
对外自定义注解类包:com.xinhe.api.facade.annotation
实现层:serviceImpl层
对外接口的实现类包:com.xinhe.api.facade.service.xxx.impl
该层服务负责出入参数的记录和调用业务控制层,将参数继续向下传递。
业务控制层
接口层:service层
业务接口类包:com.xinhe