您当前的位置:首页 > 计算机 > 精彩资源

系统架构之三层架构、MVC架构、SSM架构简介

时间:07-05来源:作者:点击数:

一、系统架构简介

在了解架构的定义之前,我们可以先知道为什么有架构?

这是为了“低耦合高内聚”,实现代码的健壮性和可扩展性。比如为了更好地降低架构中各层的耦合度,在设计中,采用面向抽象编程。就是说,在上层对下层的调用中,是通过接口实现的。而下层对上层的实现,实际上是下层接口它的实现类。这就是利用了多态,服务标准(接口)是相同的,服务提供者(实现类)是可以更换的。

在这里插入图片描述

哈哈哈,上一段话,不但没有让你对系统架构有所了解,反而多了很多新的概念,新手可能读不懂,别急,我自己挖的坑,我一定会填。来,我们慢慢理解。

首先什么是【低耦合】?低耦合就是耦合度低,你可以这么理解,耦合度高就是各个类之间的关系绑得太死,一修改某个类,其他的类就要跟着修改。当然在网站的开发中,不仅仅是指类之间的关系,假设耦合度过高,什么东西都写在一个html文件中,前端页面信息、后端业务操作全都往里丢,那一个文件的代码量是很大的,可读性差,维护难,更新也难。所以我们需要解耦,解耦就是降低耦合度,我们需要将前后端分离。

高内聚】就是,尽量把类似的功能写到一个类中,当然这是一个比较狭义的概念,但是这样理解也没有错。举个反例,也就是低内聚,你就知道高内聚的重要性了。假如我们创建一个类XiaoMing,小明他想去餐厅吃饭,这需要两个方法,一个方法eat()(吃),一个方法pay()(付款),此时我们如果将eat()方法写在XiaoMing类中,将pay()方法写在其他类中,这显然是不合理的,这就是低内聚的体现,因为我们如果把两个方法都写在XiaoMing类中,那么就只需要创建一个对象就能执行两个方法,这才是高内聚。

在上层对下层的调用中,是通过接口实现的。如何理解,假设我们定义一个类Cat作为类XiaoMing的属性,也就是小明有一只宠物是猫。

public class XiaoMing{
	private Cat cat;
	public void setCat(Cat cat){
		this.cat = cat;
	}
}

这样写有什么不好呢?耦合度高。因为假如此时小明不想养猫了,他想养狗,那么定义一个类Dog,此时XiaoMing这个类也需要修改。

public class XiaoMing{
	private Dog dog;
	public void setCat(Dog dog){
		this.dog = dog;
	}
}

如果我们面向抽象编程,我们定义一个接口Pet。此时,我们无论传入Dog对象,还是传入Cat对象。我们都不再需要修改XiaoMing这个类

public class XiaoMing{
	private Pet pet;
	public void setPet(Pet pet){
		this.pet = pet;
	}
}

这样就实现了解耦。【还看不懂的小伙伴先看看多态哈】

那我讲这个例子做什么呢,同样的,如果耦合度太高,我们的上层Service来调用下层Dao层,如果不使用面向抽象编程的话,一旦需要增加dao,那么Service层也需要修改,这就带来了麻烦。【什么是Service层,什么是Dao层,下面就会讲到】

在这里插入图片描述

我们经常提到的系统架构有三层架构、MVC架构、SSM架构,三层架构和MVC架构我们只作为一个了解,然后我们后面学的SSM架构(Spring、SpringMVC、MyBatis),就是应用这个架构进行网站的开发。

什麻?还是不知道什么是系统架构?看完三种架构之后,你就知道系统架构大概是怎么回事了。


二、三层架构

【三层架构是一个宏观的概念。后面的MVC架构和SSM架构,你可以认为是比较具体的三层架构的框架实现。】

三层架构是指:视图层 view、服务层 service、持久层 Dao,通常也叫(表示层UI、业务逻辑层BLL、数据访问层DAL),如何理解这三层呢?

view层:用于接收用户输入的数据和显示数据给用户看,是用户和服务端进行交互的界面。

【说白了就是一个网页!我们打开百度主页,我们要上网查资料,输入的是数据吧,需要服务端进行接收吧?它接收之后,根据我们要找的内容,显示出查询结果,是显示数据吧?这就是view层,就是这么好理解】

service层:实现业务的主要逻辑,是针对具体问题有具体的解决方案的一个层。

【举个例子,我们登陆账号的时候,要输入账号和密码,那百度那边的服务器需要知道我们输入的是否正确吧,它需要去数据库中找,如果账号和密码搭配得上的话,我们才能成功地登陆。这算是一个登陆业务。】

dao层:负责数据库的访问,就是实现对表的增删改查。

【记住这话:上层调用下层。我们的service层要想获得数据库中的数据,其实就是借dao层的实现类来获得。】

在这里插入图片描述

然后看看这张图:(看不懂没关系,因为三个框架中,我们是一个一个框架慢慢学的,彼此比较独立,如果没有三个学完,没有开发一些小项目,还是难以体会的)

在这里插入图片描述

三、MVC架构

MVC架构,就是由Model模型(JavaBean)、View视图(Jsp)、Controller控制器(Servlet)构成。

Model:承载数据,对用户提出请求进行计算的模块。有两种类,一种是数据承载类Bean,一种是业务处理类Bean。数据承载Bean就是实体类

【说白点,就是我们在数据库中有表,表中有字段;对应到我们的java中,表对应类,字段对应类的属性,这种类称为实体类,也是数据承载Bean,实体类的实例化对象就是对应表的记录。】

【那什么是业务处理Bean呢,就是用于处理用户的请求的,对用户的请求进行一些逻辑计算,也可以从数据库中获取数据,最后将最终结果,交给Controller】

View:为用户提供界面,和三层架构中的view基本相同。

Controller:用于将用户的请求交给Model进行处理,也可以将Model的处理结果向用户提供响应

下图是一张比较形象的图,你可以很清楚地看出MVC三者之间的关系

在上面三层架构中,我挖了一个坑,现在我来填一下,就是说MVC是三层架构的具体实现,为什么这么说呢?

我们可以认为View层和Controller层都属于三层架构的View层,Model层属于三层架构中的Service层和Dao层

嗯?你问这个三层架构是怎么个工作流程?其实就是上面那个关系图,表述出来的话,可以这么理解:

1)首先,用户通过View页面向服务端发出请求,请求可以是超链接请求、表单请求、AJAX请求、网址请求等。

2)服务端的Controller控制器接收到请求之后,对其进行一些解析,然后找到对应的Model,让Model处理这个请求

3)Model处理之后,就将结果返回给Controller

4)Controller接到结果,然后将结果发送给客户端的浏览器,浏览器解析然后进行页面渲染(或者说数据填充)


四、SSM架构

SSM架构其实也是对三层架构的一种实现。上文中也有提到,SSM是三个框架的简写,即Spring、SpringMVC、MyBatis,这三个框架功能不同,各司其职,最终实现了三层架构。

1)SpringMVC是对view层的实现者,SpringMVC中的Controller类是负责接收用户的请求,和完成请求转发及用户响应的操作。

2)MyBatis是Dao层的实现者,负责数据库中数据的增删改查。

那么,剩下的Spring是service层的实现者吗?不算是。

3)Spring是一个大杂烩,是一个大管家。我们开发一个应用,所有的Bean(你可以理解成为类)的生命周期以及行为,都是由Spring管理。比如对象创建,对象初始化,对象销毁,对象的关系等等,都由Spring管理。

一个基本的SSM项目的目录结构是这样的,看看这个结构,也许有助于你理解

可以看到在上图中,有三个包,分别是controller、dao、service

在后面对三个框架的学习,以及我们着手项目的时候,也许就能很容易理解这些概念了,这些我都有在开头说。

最后希望这篇文章能对你有所帮助。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门