设计模式-应用分层

一.什么是应用分层

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

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

在最开始的时候,为了让项目快速上线,我们通常是不考虑分层的. 但是随着业务越来越复杂,大量的代码混在⼀起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动⼀处就牵⼀发而动全身等问题。
类似公司的组织架构
公司初创阶段, ⼀个人身兼数职,既做财务, 又做人事, 还有行政。随着公司的逐渐壮大, 会会把岗位进行细分,划分为财务部门, 人事部门, 行政部门等。 各个部门内部还会再进行细分。
项目开发也是类似,最开始功能简单时,我们前后端放在⼀起开发,随着项目功能的复杂,我们分为前端和后端不同的团队,甚至更细粒度的团队。 后端开发也会根据功能再进行细分。MVC就是其中的⼀种拆分方式。 但是随着后端人员不再涉及前端,后端开发⼜有了新的分层方式。
在阿里的开发手册中,关于工程结构部分,定义了常见工程的应用分层结构:


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

二.如何分层

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

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

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

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

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

三.三层架构

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

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

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

四.Spring中的三层架构

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

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

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

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


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

相关推荐
怕浪猫10 小时前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane199413 小时前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19942 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..2 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
xiaofeiyang1502 天前
第六章 · 桥接 — 三支毛笔,画出九种颜色
设计模式
Shadow(⊙o⊙)3 天前
OTOL设计模式 One Thread One Loop
服务器·网络·设计模式
sarasuki3 天前
如何让LLM 能在半夜偷偷打开网易云呢?
人工智能·设计模式·agent
小王师傅663 天前
【设计模式】装饰模式(四):框架源码实战——从 Java I/O 到 Spring 到 MyBatis
java·设计模式
执明wa4 天前
Android RecyclerView 多类型, 多种 Item
android·xml·开发语言·设计模式·android studio
sarasuki4 天前
如何让 Agent 获取更多的能力?插件 / 技能系统
人工智能·设计模式·agent