分层解耦-三层架构

三层架构 

在上篇文章的案例中写文章-CSDN创作中心

 的Controller类承担了对于数据操作(访问)、对于对于数据的逻辑处理、以及接受请求响应数据的工作,对于类似的小项目来说冗杂程度还可以接收,但是如果项目更加复杂,就会出现后端维护困难、维护成本高,因此在开发过程中,尽可能地让每一个接口、类、方法职责单一,即只实现一种功(单一职责原则),因此在web开发中就存在三层架构

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

 在三层架构地模式之下,前端发送请求,首先会到达Controller类,然后再Controller类中调用Service进行逻辑处理,二逻辑处理的前提是,得先有数据进行逻辑处理,因此Service就会调用DAO层,DAO层来操作数据,将数据获得后,将数据返回给Service,然后Service再继续逻辑的处理,最后将处理结果返回给Controller,最后响应给客户端。

由于DAO层访问数据的方式有很多种:可能访问文件中的数据、有可能是数据库中的数据、也有可能是通过其他接口获取到的数据....可以通过面向接口的方式进行编程,即通过实现接口来实现对应的功能。具体参考(9条消息) 面向接口编程思想(的好处)_面向接口编程的主要思想是什么_我恐怕是个废柴了的博客-CSDN博客

同理再Service中也可以采用面向接口编程 

对于上一次的案例进行三层架构的拆分

明天继续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19483.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3+requests+unittest实战系列【二】

前言:上篇文章python3requestsunittest:接口自动化测试(一)已经介绍了基于unittest框架的实现接口自动化,但是也存在一些问题,比如最明显的测试数据和业务没有区分开,接口用例不便于管理等&…

快手详情API接口jason格式java php

随着移动互联网的快速发展,短视频应用成为越来越多用户获取信息和进行购物的重要途径。作为广告商或电商平台,了解和充分利用快手的商品详情API接口将为您的营销策略带来巨大的潜力 了解快手商品详情API接口 快手的商品详情API接口是一组提供商品相关信息…

Apache Doris 在金融壹账通指标中台的应用实践

本文导读: 金融壹账通作为中国平安集团的联营公司,依托平安集团 30 多年金融行业的丰富经验及自主科研能力,向客户提供“横向一体化、纵向全覆盖”的整合产品,以“技术业务”为独特竞争力,帮助客户提升效率、提升服务…

6月城市之星领跑活动获奖名单已出炉

经过一个月的角逐,6月城市之星领跑活动上榜名单终于出炉啦,本次城市赛道是根据最后登陆且6月份有入围博客之星用户的城市一共368个城市,城市人数划分区间具体情况如下: 200以上城市2个,其中有一些博主的城市由于未获取…

ArcGIS栅格影像数据处理

ArcGIS栅格影像数据处理 文章目录 ArcGIS栅格影像数据处理1. 栅格影像数据坐标系转换2. 栅格数据16bit转8bit3. 栅格数据波段变换参考链接 1. 栅格影像数据坐标系转换 点击【ArcToolbox】>【数据管理工具】>【投影和变换】>【栅格】>【投影栅格】。 2. 栅格数据16…

Redis---缓存双写一致性

目录 一、什么是缓存双写一致性呢? 1.1 双检加锁机制 二、数据库和缓存一致性的更新策略 2.1、先更新数据库,后更新缓存 2.2 、先更新缓存,后更新数据库 2.3、先删除缓存,在更新数据库 延时双删的策略: 2.4.先更新数…

Linux--操作系统进程的状态

【Linux】进程概念 —— 进程状态_linux d状态进程_Hello_World_213的博客-CSDN博客 新建:字面意思,将你的task_struct创建出来并且还未入队列 运行:task_struct结构体在运行队列中排队,就叫做运行态 阻塞: 等待非C…

Python采集课堂视频教程, m3u8视频解密

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用: requests >>> pip install requests pycryptodome --> pip install pycryptodome re 第三方模块安装方法: win R 输…

Prompt本质解密及Evaluation实战与源码解析(三)

9.5 Evaluation for QA源码解析 如图9-4所示,我们看一下LangChain框架对问答评估的(Evaluation for QA)的源代码。 图9- 5 LangChain的evaluation qa目录 在eval_prompt.py文件里面,主要定义了三个类 PromptTemplate,它们都是用于生成题目的模板。 Gavin大咖微信:NLP_Mat…

python离线安装ibm_db

下载离线包ibm_db以及clidriver 下载imb_db 在pypi官方网站https://pypi.org/project/ibm-db/#files下载离线安装包ibm_db-3.0.2.tar.gz。下载clidriver 下载地址:https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.…

java后端开发环境搭建 mac

在mac pro上搭建一套java 后端开发环境,主要安装的内容有:jdk、maven、git、tomcat、mysql、navicat、IntelliJ、redis。 本人mac pro的系统为mac OS Monterey 12.6.7,主机的硬件架构为x86_64。 左上角关于本机查看系统版本;终端…

Django搭建图书管理系统04:View视图初探

数据库虽然已经有了,但是用户通常只需要这个庞大数据库中的很小一部分进行查看、修改等操作。为此还需要代码来恰当的取出并展示数据,这一部分代码就被称为视图。 Django 中视图的概念是**「一类具有相同功能和模板的网页的集合」**。 Hello World! 首…