阿里的java开发手册给出了代码分层的:
丰富一点:
第一层:
controller, rpc service, mq 等等 轻业务逻辑,这样的话 方便业务接口的切换, 譬如同一块逻辑,原本走controller 接口,现在走rpc service;
第二层:
业务层, 一般来讲业务的复用性比较低;
第三层:
manager层, 可复用的逻辑, 或者多个dao组合的使用 等等
第四层:
dao层,代理层, 其实都是数据源层;
禁止跨层调用,每一层都有自己的职责;对于同级调用的话,我认为service层是可以的;
在阿里巴巴编码规约中列举了下面几个领域模型规约:
DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
DO的数据不能直接传入controller层;
分层不是死的,每个人都有自己的想法,自己的风格,但当大家都有了一样的共识,遵循一样的规范,那么熟悉代码的速度会更快,维护起来更加方便;