设计模式-应用分层

一.什么是应用分层

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

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

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


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

二.如何分层

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

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

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

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

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

三.三层架构

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

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

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

四.Spring中的三层架构

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

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

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

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


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

相关推荐
__万波__11 小时前
二十三种设计模式(二)--工厂方法模式
java·设计模式·工厂方法模式
前端老宋Running13 小时前
React 的“时光胶囊”:useRef 才是那个打破“闭包陷阱”的救世主
前端·react.js·设计模式
Tzarevich14 小时前
从字面量到原型链:JavaScript 面向对象的完整进化史
javascript·设计模式
繁华似锦respect18 小时前
C++ 设计模式之工厂模式详细介绍
java·linux·c++·网络协议·设计模式
想要成为祖国的花朵18 小时前
基于多设计模式的抽奖系统__测试报告
java·selenium·测试工具·jmeter·设计模式·测试用例·安全性测试
重铸码农荣光20 小时前
JavaScript 面向对象编程:从字面量到原型继承的深度探索
前端·javascript·设计模式
L***d6701 天前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
未可知7771 天前
软件设计师(下午题2)、UML与设计模式
算法·设计模式·职场和发展·uml
繁华似锦respect1 天前
C++ 设计模式之单例模式详细介绍
服务器·开发语言·c++·windows·visualstudio·单例模式·设计模式
xunyan62341 天前
面向对象(下)-设计模式与单例设计模式
java·单例模式·设计模式