教你怎么在Java项目中正确的分层

教你怎么在Java项目中正确的分层

一个项目是由许多方方面面的构成的,如果都把内容放在一个文件中,会显得文件臃肿冗杂,而且极其不易于维护和管理。接下来,我将分享如何在Java项目中进行正确的分层,以及怎么对分层进行优化和分层模型的转换。

背景

说起应用分层,大部分人都会认为这个不是很简单嘛java 分层,就 ,, 三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,做的逻辑比 还多教你怎么在Java项目中正确的分层, 往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。

的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。

但是在真正的团队开发中每个人的习惯都不同,写出来的代码必然带着自己的标签,有的人习惯 写大量的业务逻辑,有的人习惯在 中之间调用远程服务。

这样就导致了每个人的开发代码风格完全不同,后续其他人修改的时候,一看,我靠这个人写的代码和我平常的习惯完全不同,修改的时候到底是按着自己以前的习惯改,还是跟着前辈们走。

这又是个艰难的选择,选择一旦有偏差,你的后辈又维护你的代码的时候java 分层,恐怕就要骂人了。

所以一个好的应用分层需要具备以下几点:

如何进行分层阿里规范

在阿里的编码规范中约束的分层如下图:

①开放接口层:可直接封装 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。

②终端显示层:各个端的模板渲染并执行显示的层。当前主要是 渲染,JS 渲染,JSP 渲染,移动端展示等。

③Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。

④ 层:相对具体的业务逻辑服务层。

⑤ 层:通用业务处理层。

它有如下特征:

⑥DAO 层:数据访问层,与底层 MySQL、、Hbase 进行数据交互。

阿里巴巴规约中的分层比较清晰简单明了,但是描述得还是过于简单了,以及 层和 层有很多同学还是有点分不清楚之间的关系,就导致了很多项目中根本没有 层的存在。

下面介绍一下具体业务中应该如何实现分层。

优化分层

从我们的业务开发中总结了一个较为的理想模型,这里要先说明一下由于我们的 RPC 框架选用的是 可能会比其他的一些 RPC 框架例如 Dubbo 会多出一层,作用和 层类似。

最上层 和 是我们阿里分层规范里面的第一层:轻业务逻辑,参数校验,异常兜底。

通常这种接口可以轻易更换接口类型java 分层,所以业务逻辑必须要轻,甚至不做具体逻辑。

①:业务层,复用性较低,这里推荐每一个 方法都得对应一个 ,不要把业务编排放在 中去做,为什么呢?

如果我们把业务编排放在 层去做的话,如果以后我们要接入 ,我们这里又需要把业务编排在做一次,这样会导致我们每接入一个入口层这个代码都得重新复制一份。

如下图所示:

这样大量的重复工作必定会导致我们开发效率下降,所以我们需要把业务编排逻辑都得放进 中去做:

②:可复用逻辑层。这里的 可以是单个服务的,比如我们的 Cache,MQ 等等,当然也可以是复合的。

当你需要调用多个 的时候,这个可以合为一个 ,比如逻辑上的连表查询等。如果是 或 需要在这一层做一些数据转换。

③DAO:数据库访问层。主要负责“操作数据库的某张表,映射到某个 Java 对象”,DAO 应该只允许自己的 访问,其他 要访问我的数据必须通过对应的 。

分层领域模型的转换

在阿里巴巴编码规约中列举了下面几个领域模型规约:

层次领域模型

/

VO/DTO

/

AO/BO

DAO

DO

每一个层基本都自己对应的领域模型,这样就导致了有些人过于追求每一层都是用自己的领域模型。

这样就导致了一个对象可能会出现 3 次甚至 4 次转换在一次请求中,当返回的时候同样也会出现 3-4 次转换,这样有可能一次完整的请求-返回会出现很多次对象转换。

如果在开发中真的按照这么来,恐怕就别写其他的了,一天就光写这个重复无用的逻辑算了吧。

所以我们得采取一个折中的方案:

总结

总的来说业务分层对于代码规范是比较重要,决定着以后的代码是否可复用,是否职责清晰,边界清晰。

当然这种分层其实见仁见智教你怎么在Java项目中正确的分层,团队中的所有人的分层习惯也不同,所以很难权衡出一个标准的准则,总的来说只要满足职责逻辑清晰,后续维护容易,就是好的分层。

到此这篇关于 Java 项目中如何正确分层的全部内容就介绍到这了,想要了解更多相关 Java 项目分层的其他内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持我们!

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 教你怎么在Java项目中正确的分层

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们