Java——三层架构

embedded/2024/10/18 16:54:17/

在我们进行程序设计以及程序开发时,尽可能让每一个接口、类、方法的职责更单一些(单一职责原则)。

单一职责原则:一个类或一个方法,就只做一件事情,只管一块功能。

这样就可以让类、接口、方法的复杂度更低,可读性更强,扩展性更好,也更利用后期的维护。

有一些程序并不满足单一职责原则,下面来举个例子:

在这里插入图片描述

那其实我们上述案例的处理逻辑呢,从组成上看可以分为三个部分:

  • 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作。
  • 逻辑处理:负责业务逻辑处理的代码。
  • 请求处理、响应数据:负责,接收页面的请求,给页面响应数据。

按照上述的三个组成部分,在我们项目开发中呢,可以将代码分为三层:
在这里插入图片描述

  • Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据。
  • Service:业务逻辑层。处理具体的业务逻辑。
  • Dao:数据访问层(Data Access Object),也称为持久层。负责数据访问操作,包括数据的增、删、改、查。

基于三层架构的程序执行流程:

在这里插入图片描述

  • 前端发起的请求,由Controller层接收(Controller响应数据给前端)
  • Controller层调用Service层来进行逻辑处理(Service层处理完后,把处理结果返回给Controller层)
  • Serivce层调用Dao层(逻辑处理过程中需要用到的一些数据要从Dao层获取)
  • Dao层操作文件中的数据(Dao拿到的数据会返回给Service层)

思考:按照三层架构的思想,如何要对业务逻辑(Service层)进行变更,会影响到Controller层和Dao层吗?

答案:不会影响。 (程序的扩展性、维护性变得更好了)

可知,三层架构的好处如下:

  1. 复用性强
  2. 便于维护
  3. 利用扩展

http://www.ppmy.cn/embedded/8982.html

相关文章

Activiti——将绘制的流程图存入act数据库并进行流程推进与状态流转

文章目录 前言流程图入库操作 RepositoryService项目结构数据库连接配置文件入库Java测试代码zip 方式进行流程的批量部署 流程启动 RuntimeService待处理任务查看 TaskService流程状态的扭转查询流程定义信息 RepositoryService查询正在执行的流程实例 RuntimeService已部署流…

单机单实例部署Kafka及测试

文章目录 部署Docker 测试启动测试创建Topic生产者消费者 集成Manager的部署dockerfile效果 参考资料 在我们做和kafka开发相关的工作时,往往希望独立部署一套kafka测试环境。而kafka部署时,不能只是简单安装kafka自身组件,还要安装zookeeper…

Flutter开发之--初识Flutter

文章目录 概述Flutter整体架构嵌入层引擎层框架层 跑通demo尝鲜Flutter项目的目录介绍Flutter demo项目的运行 总结 概述 Flutter 是由Google公司研发的一种跨端开发技术,在2018年正式推出。Flutter自带Skia图形绘制引擎,采用自绘制的方式,不…

Docker容器化部署(企业版)

大家好,webfunny前端监控埋点系统,已经正式发布了webfunny的官方镜像: Webfunny镜像目录:https://hub.docker.com/r/webfunny/webfunny_monitor_cluster/tags 部署前提是你的服务器已经安装了Docker环境,没有安装doc…

uniapp uni.navigateBack 连带返回问题记录

uniapp uni.navigateBack 连带返回问题记录 问题描述 去除原生导航栏,使用自定义导航,并使用自定义返回按钮,通过方法handleBack.navigateBack()返回到上一页。 共有3层页面,A -> B -> C。都是自定义导航栏。均使用navig…

vue详解(3)

1. Vue 生命周期总结 四个阶段,八个钩子 -> 三个常用 created,mounted,beforeDestroy 2. 工程化开发 & 脚手架 Vue CLI 基本介绍: Vue CLI 是 Vue 官方提供的一个全局命令工具。 可以帮助我们快速创建一个开发 Vue 项目…

Pytest精通指南(25)钩子函数-并发执行(pytest-xdist)

文章目录 前言应用场景插件安装注意事项参数分析使用方法拓展-分组并行 前言 pytest-xdist是一个pytest插件,它用于实现测试用例的并发执行,从而显著提高大型测试套件的运行速度。 在测试套件非常庞大或测试用例之间几乎没有依赖关系时,并发执…

文献速递:深度学习胶质瘤诊断---通过深度学习和弥散加权成像提高胶质瘤遗传亚型的无创分类

Title 题目 Improving the noninvasive classification of glioma genetic subtype with deep learning and diffusion weighted imaging 通过深度学习和弥散加权成像提高胶质瘤遗传亚型的无创分类 Background 背景 Diagnostic classification of diffuse gliomas now requ…