当前位置: 首页 > news >正文

设计模式-应用分层

一.什么是应用分层

        在没有应用分层的项目中: 

        此时对于前端的请求,不论是接收数据、处理数据、返回数据,都在堆积在一起的,这样的做法对于项目规模小的项目来说还能勉强应对,一但项目的规模变大,这样堆积在一起的做法,非常不利于项目的后期维护。

        在最开始的时候,为了让项目快速上线,我们通常是不考虑分层的. 但是随着业务越来越复杂,大量的代码混在⼀起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动⼀处就牵⼀发而动全身等问题。

        类似公司的组织架构
                公司初创阶段, ⼀个人身兼数职,既做财务, 又做人事, 还有行政。随着公司的逐渐壮大, 会会把岗位进行细分,划分为财务部门, 人事部门, 行政部门等。 各个部门内部还会再进行细分。
                项目开发也是类似,最开始功能简单时,我们前后端放在⼀起开发,随着项目功能的复杂,我们分为前端和后端不同的团队,甚至更细粒度的团队。 后端开发也会根据功能再进行细分。MVC就是其中的⼀种拆分方式。 但是随着后端人员不再涉及前端,后端开发⼜有了新的分层方式。
        在阿里的开发手册中,关于工程结构部分,定义了常见工程的应用分层结构:

                应用分层是⼀种软件开发设计思想,它将应用程序分成N个层次,这N个层次分别负责各自的职责,多个层次之间协同提供完整的功能. 根据项目的复杂度,把项目分成三层,四层或者更多层。
                常见的MVC设计模式, 就是应用分层的⼀种具体体现。

二.如何分层

        

        MVC思想就是一个应用分层很好的体现:

        也就是将用户视图和业务处理分开,并且通过中间的Controller来连接。

        但是就目前的项目开发来说,现在的Web网站规模都非常的庞大,所以现在开发都采用前后端分离的方式开发,后端开发人员根本不关注网站的前端页面是如何实现的,后端开发人员只需要将前端所需要用到的数据返回给前端开发人员就好了。

        所以针对后端开发有了新的分层架构,把整体的架构分为:表现层、业务处理层、数据层。

        这种分层方式也叫做"三层架构"。

 

三.三层架构

        1.表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层;

        2.业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现;

        3.数据层:负责存储和管理与应用程序相关的数据;

四.Spring中的三层架构

五. MVC和三层架构的区别和联系

        首先从概念上来讲,两者都是软件工程设计领域中的架构模式。

        MVC架构模式是又三部分组成,分别是:View(视图)、Controller(控制器)、Model(模型)。

        三层架构是将应用分为:Controller(表现层)、Service(业务处理层)、Dao(持久层)。

        MVC中,视图和控制器合起来对应三层架构中的表现层,模型对应三层架构中的业务逻辑层, 数据层,以及实体类。
        二者其实是从不同角度对软件工程进行了抽象。
        MVC模式强调数据和视图分离,将数据展示和数据处理分开,通过控制器对两者进行组合。
        三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开。
        角度不同也就谈不上互相替代了,在日常的开发中可以经常看到两种共存的情况,比如我们设计模型层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)。
        但是⼆者的目的是相同的, 都是"解耦,分层,代码复用"。 
http://www.dtcms.com/a/266744.html

相关文章:

  • 【狂飙AGI】第8课:AGI-行业大模型(系列2)
  • NumPy-核心函数np.dot()深入理解
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之高斯椭球的颜色表达
  • 鸿蒙开发BindSheet选择章节效果
  • 服务器间接口安全问题的全面分析
  • 数据集-目标检测系列- 卡车 数据集 truck >> DataBall
  • 代码随想录算法训练营第四十六天|动态规划part13
  • 【LeetCode 热题 100】238. 除自身以外数组的乘积——(解法一)前缀积与后缀积
  • 算法学习笔记:7.Dijkstra 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 物联网数据安全区块链服务
  • AI Agent意图识别
  • 二维码驱动的独立站视频集成方案
  • Mysql+neo4j创建节点和关系
  • Linux操作系统之文件(三):缓冲区
  • Kubernetes 服务发布基础学习
  • OpenSSL 内存泄漏修复全景:119 个历史 Commit 的类型分析与防御启示
  • 人工智能及其十大优势 Artificial Intelligence: With Its Advantages
  • PyCharm 安装使用教程
  • (LeetCode 每日一题) 3307. 找出第 K 个字符 II (位运算、数学)
  • 电力市场化改革中的智能决策革命:大模型与交易双驱动模式探析
  • 【微服务】记录-登录信息传递过程
  • 【AI大模型】深入理解 Transformer 架构:自然语言处理的革命引擎
  • LangChain 全面入门
  • Java 大视界 -- Java 大数据实战:智能安防入侵检测的特征工程与模型融合全解析
  • 文本分词 nltk
  • 【Unity笔记01】基于单例模式的简单UI框架
  • PowerPoint 转 PDF 转换器:Python GUI 工具的深度解析
  • python高级变量XI
  • vue-39(为复杂 Vue 组件编写单元测试)
  • 行阶梯形矩阵和行最简形矩阵的区别