项目重构-项目代码分层的意义

项目重构-项目代码分层的意义

分层设计是什么?有什么好处?

分层设计将软件划分成若干层,每一层只解决一部分问题,通过所有层的协作来完成整体的目标。一个复杂的问题通过分解成一系统子问题,这样就有效的降低了每个子问题的规模与复杂度。

分层设计带来的好处:

  • 降低了系统软件的复杂度。将一个复杂问题通过分解,分而治之。
  • 功能的复用和封装。

项目分层的目的

  • 保证多成员参与的项目保持视觉一致性;
  • 迭代与交接可以更加无缝;
  • 减少设计出错率;
  • 提升团队工作效率;
  • 直接目的是约束设计行为,最终目的是确保设计合理统一

如何进行项目分层

分层以及业务切分设计

切分原则
  • 典型的 MVC 分层模式
  • 在中间的业务层,按照业务领域,纵向分隔多个业务应用(app),在cmd 目录下区分。
  • 在每个业务应用内部,采用通用分层设计,详见“分层设计”。
  • 理清楚每个层次的边界是什么
  • 先水平分层,再垂直切分业务模块,模块内部再次水平分层。
设计思想和原则
  • 迪米特法则:不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口,也就是需要基于接口而非实现编程
  • 这样做的好处:
    • 符合一个原则:开放封闭原则(Open Close Principle):如果我的依赖源有变化的时候,我们只需要再增加一个实现就可以,不需要变更整个流程。
    • Mock 数据的时候,我只需要实现这个接口就可以实现Mock。而且可以使用自动化工具生成Mock代码

如何来做系统分层

我们先来看下阿里系统分层的规约,如下图。
在这里插入图片描述

  • 终端显示层:各端模板渲染并执行显示的层。当前主要是 Velocity 渲染,JS 渲染, JSP 渲染,移动端展示等。这块其实就是通常的前端。
  • 开放接口层:将 Service 层方法封装成开放接口,同时进行网关安全控制和流量控制等。
  • Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
  • Service 层:业务逻辑层。
  • Manager 层:通用业务处理层。这一层主要有两个作用,其一,你可以将原先 Service 层的一些通用能力下沉到这一层,比如与缓存和存储交互策略,中间件的接入;其二,你也可以在这一层封装对第三方接口的调用,比如调用支付服务,调用审核服务等。
  • DAO 层:数据访问层,与底层 MySQL、Oracle、HBase 等进行数据交互。这样的定义,其实是想将数据 CURD 的逻辑和业务逻辑进行分离,将 基础CRUD 封装在 DAO 中,业务逻辑即放在业务层中。
  • 外部接口或第三方平台:包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。

在这个分层架构中主要增加了 Manager 层,它与 Service 层的关系是:Manager 层提供通用的处理服务接口,Service 层负责依据业务逻辑来编排原子接口。

分层领域模型规约

• DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
• DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
• BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。即对象除了数据外,还会包含一定的业务逻辑,也可以说是充血领域模型。
• AO(Application Object):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
• VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
• Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。

几种分层领域模型的使用范围
  • VO/AO 使用在对外暴露的数据
  • DTO/BO 使用在业务逻辑层上
  • DO 只使用在数据持久层
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java系统项目源码软件是一种用于编写和管理Java项目代码的软件工具。在开发Java系统项目时,我们通常需要编写大量的代码来实现所需的功能,这些源代码包括Java类、接口、方法等。而Java系统项目源码软件就是帮助开发人员完成代码编写和管理的工具。 首先,Java系统项目源码软件提供了一个集成开发环境(IDE),例如Eclipse、IntelliJ IDEA等。这些IDE能够提供代码编辑、编译、调试、自动补全等功能,极大地提高了开发效率。开发人员可以在IDE中轻松编写代码,并且通过编译和调试功能来验证代码的正确性。 其次,Java系统项目源码软件还提供了代码管理工具,例如版本控制工具Git、SVN等。这些工具能够帮助开发人员管理不同版本的代码,方便团队合作开发。开发人员可以通过这些工具进行代码提交、合并、回滚等操作,保证代码的一致性和可维护性。 此外,Java系统项目源码软件还提供了各种代码优化和重构功能。开发人员可以利用这些功能来改善代码质量、提高代码性能、降低代码的复杂度。例如,可以通过自动重构功能来重新组织代码结构,使代码更易读、更易维护。 最后,Java系统项目源码软件还提供了丰富的插件和扩展库。开发人员可以借助这些插件和扩展库来扩展软件功能,实现更多的开发需求。例如,可以使用数据库插件来方便地与数据库进行交互,使用图形界面插件来开发用户友好的界面等。 综上所述,Java系统项目源码软件是一个功能强大的工具,它能够帮助开发人员编写、管理和优化Java系统项目的源代码。通过使用这些软件,开发人员能够更高效地开发和维护Java系统项目,提高开发效率和代码质量。 ### 回答2: Java系统项目源码软件是一种帮助开发人员编写、调试和管理Java项目的软件。它通常包含了项目的源代码、配置文件以及所需的库文件等。Java系统项目源码软件的功能非常丰富。 首先,Java系统项目源码软件提供了开发环境和工具,比如集成开发环境(IDE)和代码编辑器。开发人员可以在这些工具中编写Java代码,并且具有自动补全、语法检查、调试等功能,可以大大提高编写代码的效率。 其次,Java系统项目源码软件可以帮助开发人员管理项目。通过这种软件,开发人员可以创建、导入和删除项目,可以查看项目的结构和依赖关系,可以进行版本控制和项目的协同开发。这样,开发人员可以更好地管理自己的项目,提高团队协作效率。 此外,Java系统项目源码软件还提供了一些代码生成和自动化工具。比如,可以通过这种软件自动生成基本的代码模板、方法和类,加快代码编写的速度。还可以进行代码重构,提高代码的可读性和可维护性。 最后,Java系统项目源码软件还支持一些测试和调试工具。开发人员可以使用这些工具进行单元测试、集成测试和性能测试,确保代码的质量和稳定性。同时,还可以进行代码调试,找出和修复代码中的错误。 总之,Java系统项目源码软件是开发Java项目的重要工具,可以大大提高开发人员的开发效率和项目管理能力。通过这种软件,开发人员可以更好地编写和管理Java项目,在保证代码质量和稳定性的基础上提供更好的用户体验。 ### 回答3: Java系统项目源码软件是一种用于开发Java语言系统项目的工具软件。它包含了Java程序的源代码,并提供了一套完整的开发环境和工具,帮助开发人员进行项目开发和管理。 Java系统项目源码软件提供了丰富的功能和组件,可以满足不同项目的需求。它可以帮助开发人员快速构建可靠和高效的系统,并提供了诸如数据访问、网络通信、用户界面和安全性等方面的支持。通过使用Java系统项目源码软件,开发人员可以减少开发时间和工作量,提高开发效率和质量。 Java系统项目源码软件基于Java语言和相关技术,如Java开发工具包(JDK)、集成开发环境(IDE)等,提供了一系列的工具和框架,用于开发和管理Java语言项目。开发人员可以使用这些工具和框架来编写、调试、测试和部署Java程序,并进行版本控制、项目管理和团队协作等工作。 使用Java系统项目源码软件,开发人员可以根据项目需求选择合适的框架和库,使用现有的组件和模块,以及自定义开发新的功能和模块。同时,它还提供了对常见开发模式的支持,如面向对象编程、模块化开发和分层架构等,帮助开发人员构建可维护和可扩展的系统。 总之,Java系统项目源码软件是一种强大的工具,可用于开发各种类型的Java系统项目。它不仅提供了丰富的功能和组件,还提供了一套完整的开发环境和工具,帮助开发人员提高开发效率和质量。无论是初学者还是经验丰富的开发人员,都可以从中受益,并快速构建优秀的Java系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoLiuRs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值