软件开发应用分层、每层的作用及各层之间调用关系

本文会围绕怎么分层,每层什么作用,分层有什么好处这几个问题展开

  • (一)怎么分层
    • 阿里巴巴Java开发手册推荐分层
    • 不同看法
  • (二)每层什么作用
    • controller层(类似于部门秘书)
    • service层(类似于部门经理)
    • DAO层、Manager层(类似于程序猿、采购)
  • (三)分层的好处
    • 解耦接口设计推荐

(一)怎么分层

阿里巴巴Java开发手册推荐分层

软件开发应用分层、每层的作用及各层之间调用关系_第1张图片

不同看法

阿里巴巴Java开发手册中推荐manager层可以和DAO层交互,并可以与多个DAO组合复合。我不推荐这么做,我认为DAO层和Manager层地位是一样的,不同的是DAO层调用的是数据库,Manager层调用的是第三方插件(南向接口或者缓存等)。DAO层和Manager层只提供增删改查等最基本的功能,至于组合复用提供完整的功能和事务控制应该交给Service层来做。

(二)每层什么作用

controller层(类似于部门秘书)

数据校验,非前后分离项目还会做前端路由控制等简单工作

service层(类似于部门经理)

service层提供的方法都是完整的功能,事务控制也在service层处理

DAO层、Manager层(类似于程序猿、采购)

只提供增删改查等功能,并且只能被自己的service调用

着重强调:DAO层和Manager层只能被自己的service调用。就像程序员、采购只做自己部门经理安排的工作一样,因为只有部门经理知道DAO、Manager做增删改查等的时候还需要做什么工作,反过来说只有增删改查等操作让对应的service控制,才能保证service的事务和功能的完整性

(三)分层的好处

  • 职责明确:数据校验,事务控制和完整功能,操作数据库,操作缓存,操作第三方等
  • 解耦:这个解耦是指模块解耦,比如说缓存更换,或者添加新的缓存,只在service处理就可以了
  • 结构清晰,易于维护:只通过service层就可以清楚的知道该业务用到那些组件,方便理解和上手
  • 好处太多了。。。

解耦接口设计推荐

第三方接口设计时候,接口中的参数不要使用第三方jar的对象,使用jdk提供的对象或者自己系统编写的对象。

你可能感兴趣的:(后端,#,接口)