赞
踩
在开发的过程中, 我们会发现, 程序的代码有时会很"杂乱", 如果后面的项目更大了, 那就会更加地杂乱无章(文件乱, 代码内容乱).
也基于此, 接下来让我们来学习一下应用分层.
也类似于公司的组织架构
公司初创阶段, 一个人身兼数职, 既做财务, 又做人事,还有行政.
随着公司的逐渐壮大, 会把岗位进行细分, 划分为财务部门, 人事部门, 行政部门等.各个部门内部还会再进行划分.
项目开发也是类似, 最开始功能简单时, 我们会放在前后端一起开发. 随着项目功能的复杂, 我们分为前端和后端不同的团队, 甚至更细粒度的团队. 后端开发也会根据功能再进行细分. MVC就是其中的一种拆分方式.
但是随着后端人员不再涉及前端, 后端开发又有了新的分层方式.
在阿里开发手册中, 关于工程结构部分, 定义了常见工程的应用分层结构:
那什么是应用分层呢?
应用分层是一种软件开发设计思想, 它将应用程序分成N个层次, 这N个层次分别负责各自的职责, 多个层次之间协同提供完整的功能. 根据项目的复杂度, 把项目分成三层, 四层或者更多层.
常见的MVC设计模式, 就是应用分层的一种具体体现.
为什么需要应用分层?
在最开始的时候, 为了让项目快速上线, 我们是通常不考虑分层的. 但是随着业务越来越复杂, 大量的代码混在一起, 会出现逻辑不清晰, 各模块相互依赖, 代码扩展性差, 改动一处就会让全身出现问题. 所以学习项目分层就是程序员的必修课了.如何分层(三层架构)?
我们知道, MVC就是把整体的系统分成了Model(模型), View(视图) 和Controller(控制器)三个层次, 也就是将用户视图和业务处理隔离开, 并通过控制器连接起来, 很好地实现逻辑与表现的解耦, 是一种标准的软件分层架构.
目前现在更主流的开发方式是"前后端分离"的模式, 后端开发工程师不再关注前端的实现, 所以对于Java后端开发者, 又有了一种新的分层架构: 把整体架构分为表现层, 业务逻辑层和数据层. 这种分层方式也称为"三层架构".
1.表现层: 就是展示数据结果和接收用户指令的, 是最靠近用户的一层;
2.业务逻辑层: 负责处理业务逻辑, 里面有复杂业务的具体实现;
3.数据层: 负责存储和整理与应用程序相关的数据.
按照上面的层次划分, Spring MVC站在后端人员的角度上, 也进行了支持, 把上面的代码划分为三个部分:
请求处理, 响应数据: 负责, 接收页面的请求, 给页面响应数据.
逻辑处理: 负责业务逻辑处理的代码.
数据访问: 负责业务数据的维护操作, 包括增, 删, 查, 改等操作.
Controller:控制层. 接收前端发送的请求, 对请求进行处理, 并响应数据.
Service:业务逻辑层. 处理具体的业务逻辑.
Dao:数据访问层, 也称为持久层. 负责数据的访问操作, 包括增删查改.
MVC和三层架构的区别和联系
在它们的联系上, 众说风云, 能够自己说出自己的观点即可.
从概念上来讲, 它们都是软件工程领域中的架构模式.
MVC三层架构模式由三部分组成, 分别是: 模型, 视图, 控制器.
三层架构将业务应用划分为: 表现层, 业务逻辑层, 数据访问层.
MVC中, 视图和控制器合起来对应三层架构中的表现层. 模型对应三层架构中的业务逻辑层, 数据层以及实体类.
两者实际上是从不同角度上对软件工程进行了抽象.
MVC模式强调数据和视图的分离,将数据展示和数据处理分隔开, 通过控制器对两者进行组合.
三层架构强调的是不同维度数据处理的高内聚和低耦合,将交互界面, 业务处理和数据库操作的逻辑分开.
两者共同的目的都是: "解耦, 分层, 代码复用".
软件设计的原则:高内聚低耦合
高内聚指的是: 一个模块中各个元素之间联系的紧密程度, 如果各个元素(语句,程序段)之间的联系程度越高, 则内聚性越高, 即"高内聚".
低耦合指的是: 软件中各个层, 模块之间的依赖关联程序越小越好. 修改一处代码, 其它模块的代码改动越少越好.
高内聚和低耦合矛盾吗?
不矛盾, 高内聚指的是一个模块中各个元素之间的紧密程度, 低耦合指的是不同模块之间的紧密程度.
这就好比一个企业, 包含很多部门, 各个部门之间的关联关系要尽可能的小, 一个部门发生问题,要尽可能对降低的其它部门减小影响, 就是耦合. 但是部门内部员工关系要尽可能紧密, 遇到问题一起解决, 克服, 这叫做内聚.
降低层与层之间的依赖, 结构更加的明确, 利于各层逻辑的复用.
开发人员可以只关注整个结构中的其中的某一层, 极大地降低了维护成本和维护时间.
可以很容易的用新的实现替换原有层次的体现
有利于标准化.
1.学习Spring MVC, 其实就是学习各种Web开发需要用到的注解.
(1)@RequestMapping: 路由映射
(2)@RequestParam: 后端参数重命名
(3)@RequestBody: 接收JSON类型的参数
(4)@PathVariable: 接收路径参数
(5)@RequestPart:上传文件
(6)@ResponseBody: 返回数据
(7)@CookieValue: 从Cookie中获取值
(8)@SesssionAttribute: 从Session中获取值
(9)@RequestHeader: 从Header中获取值
(10)@Controller: 定义一个控制器, Spring框架启动时加载, 把这个对象交给Spring管理.默认返回视图
(11)@RestController: @RequestBody + @Controller 返回数据.
2.Cookie和Session都是会话机制, Cookie是客户端机制, Session是服务端机制. 两者通过SessionId来关联. Spring MVC内置HttpServletRequest, HttpServletResponse两个对象.需要使用时, 直接在方法中添加对应参数即可, Cookie和Session可以从HttpServletRequest中获取, 也可以直接使用HttpServletResponse设置Http响应状态码.
3.JavaEE学习阶段会涉及到较多的工具,插件的学习.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。