java 分层_Java分层架构的全面解析

本文介绍了Java分层架构的四个主要层次:表示层、应用程序层、领域层和基础设施层,强调了关注点分离的重要性。文章讨论了分层架构的优势,如简洁性、一致性、可浏览性,以及缺点,如缺乏内置可伸缩性和低内聚性。作者建议在小型项目、微服务或简单业务场景中使用分层架构,以保持代码组织清晰。
摘要由CSDN通过智能技术生成

什么是分层架构?

据我了解,分层体系结构是将项目结构组织为四个主要类别: 表示,应用程序,领域和基础结构。每个层都包含与其表示的特定关注点有关的对象。

36236fc2228b9b9b44976c94a88ac3d9.png

· 表示层包含负责向最终用户呈现UI或将响应发送回客户端的所有类(以防我们在后端进行深入操作)。

· 应用程序层包含应用程序满足其功能要求所需的所有逻辑,但同时又不是域规则的一部分。在我使用过的大多数系统中,应用程序层都是由服务编排域对象来满足用例场景的服务。

· 域层表示基础域,主要由域实体以及某些情况下的服务组成。业务规则,如不变式和算法,都应保留在该层中。

· 基础结构层(也称为持久层)包含负责进行技术工作的所有类,例如将数据持久保存在数据库中(例如DAO,存储库或您正在使用的其他任何东西)。

要正确实现经典的分层体系结构,有两个重要规则:

1. 从展示到基础架构,所有依赖关系都朝一个方向发展。(好吧,处理持久性和域有点棘手,因为基础结构层通常直接保存域对象,因此它实际上知道域中的类)

2. 与一层关注点无关的逻辑不应放在另一层中。例如,用户界面中不应执行任何域逻辑或数据库查询。

分层架构的本质

架构是一个重载的术语,因此我们可能应该更深入地了解该术语在层上下文中的实际含义。分层体系结构背后的主要思想是关注点分离–正如我们已经说过的那样,我们希望避免将域或数据库代码与UI内容等混合使用。将项目分为几层的实际想法表明,应将关注点分离为由源代码组织实现。这意味着,除了对应该分离的问题提供一些指导之外,分层体系结构还没有告诉我们有关项目设计和实施的其他信息。这意味着我们应该用其他一些体系结构过程对其进行补充,例如一些前期设计,日常设计会议,甚至是成熟的 域驱动设计。我们选择的哪个选项都无关紧要,至少是为了分层而已,但我们需要记住: 分层体系结构除了指导如何组织源代码之外,什么也没有给我们提供任何帮助。

实施分层架构

配备了要创建的层的知识,它们之间的关系以及体系结构的本质之后,我们准备实施它。正如您大多数人所期望的那样,我们将通过为每个系统创建单独的程序包,将系统划分为多个层。当应用依赖和分离规则时,事情并不是那么明显。可以尝试将每一层放在单独的Maven模块中,但是要捕获域和持久性之间的怪异关系并不容易。我通常坚持使用软件包,并使用常识和代码审查来确保没有违反任何规则。

分层架构的好处

尽管你们中有些人可能仍然不相信它,但是分层体系结构有一些好处,包括:

· 简洁性-这个概念非常易于学习,一开始就可以在项目中看到。

· 跨不同项目(各层)保持一致,因此每个分层项目中的整体代码组织几乎相同。

· 保证的关注点分离–只是关注点具有层次,并坚持使用分层体系结构的规则,但是隐含的代码组织非常容易。

· 从技术角度来看,可浏览性–当您要更改给定种类的某些/所有对象中的某些内容时,很容易找到它们并将它们放在一起。

分层架构的缺点

而且,当然,分层体系结构并不是完美的。它的一些缺点包括:

· 没有内置的可伸缩性–当项目增长太多时,您需要找到一个密钥来自己进一步组织。分层体系结构的原理对您没有帮助。

· 隐藏的用例–您仅通过查看代码组织就无法真正说出项目在做什么。您至少需要阅读类名,不幸的是,有时甚至要阅读实现。

· 内聚性低–构成常见方案和业务概念的类彼此之间相距甚远,因为该项目是围绕分离的技术问题进行组织的。

· 无依赖关系反转–在传统的分层体系结构中,依赖关系是直接的,从概念上讲,从低层基础结构层进行的更改可以传播到更重要的更高层。

何时应用分层架构

首先,我想写一些我自己使用分层体系结构的案例,但是我认为我们可以根据其优缺点使用更加系统的方法:

· 简洁性:这对每个人显然都很重要。不存在的学习曲线使其特别适合那些缺乏经验的团队,并且可以轻松地申请没有预算的项目来投资更高级的体系结构。

· 一致性:由同一群人处理的多个小型项目,例如微服务的内部体系结构。

· 关注点分离:经验不足的团队。

· 技术可浏览性:在某种程度上,它对所有人都有帮助。这取决于您要在给定时刻尝试找到的内容。

· 没有内置的可伸缩性:应该保持较小规模的项目(例如微服务)或可以轻松分解为较小部分的较大项目。

· 隐藏的用例和低内聚性:没有或只有很少的复杂业务场景的项目,例如CRUD操作或简单的REST服务。

· 无依赖关系反转:对基础结构几乎没有依赖关系的项目,其中没有严重的底层更改即可实际传播到更高层次。

摘要

如您所见,分层体系结构具有其光明和黑暗的一面。对我而言,它的简单性和一致性使其非常适合微服务,而无需过多的严肃的业务逻辑。人们可能会质疑这样的微服务是否应该首先存在,但是考虑到大型整体的现实常常使它们变得不那么邪恶。您应该从本文中学到的最重要的一课是: 分层体系结构是关于组织代码以很好地分离关注点,而实际上没有其他内容。

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

df9860e9159873ee5fd04ece7de653dd.png

eb966c8fda2f021c1965b35c42af9a46.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值