软件架构设计:B/S层次架构之MVC/MVP/MVVM

层次架构风格从之前的两层C/S到三层C/S,然后演化为三层B/S架构,三层B/S架构之后仍然在往后面演化,我们来看一下层次架构演化过程中都有了哪些演化的架构风格呢?
而我们先简单了解一下之前的层次架构风格中分层的各个层次的作用 。

软件架构设计:B/S层次架构之MVC/MVP/MVVM

文章插图
  • 表现层:由于用户进行交互,比如MVC,MVP,MVVM其实都是与用户页面打交道的一层
  • 中间层:比如我们的接口层或者业务逻辑层,一般主要用于处理业务逻辑,比如我们的service层
  • 数据访问层:ORM(对象关系映射),比如说平常的hibernate或MyBatis.就是把一个个对象和关系表的数据通过映射关系绑定起来,让我们把数据库操作映射到这个对象的操作上来 。。
  • 数据架构层(其实就是数据库)
1、MVC架构风格MVC分别是什么?
  • Model(模型):是应用程序中用于处理应用程序数据逻辑的部分 。通常模型对象负责在数据库中存取数据 。
  • View(视图):是应用程序中 处理数据显示的部分,通常视图是依据模型数据创建的 。
  • Controller(控制器):是应用程序中处理用户交互的部分 。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据 。
在J2EE体系中对应关系为:
  • Model(模型):Entity Bean, Session Bean
  • View(视图):JSP
  • Controller(控制器):Servlet
在SpringBoot体系中
  • Model(模型):也就是我们的Entity
  • View(视图):模板页面,如果是JSON数据表示省去了View这个层次,返回JSON数据交给前端自己处理数据并渲染即可
  • Controller(控制器):Controller,其实本质上还是Servlet
主动MVC和被动MVC
软件架构设计:B/S层次架构之MVC/MVP/MVVM

文章插图
细节其实不需要我们去了解,但是有主动型和被动型需要我们了解 。
动作解读(了解MVC直接如何交互)
  • 1、客户做出某种动作,比如点击某个按钮,View接收到这个动作
  • 2、然后把这个动作传递给Controller层级
  • 3、然后把这个动作继续传递给Model,Model来处理数据的业务逻辑 。
  • 5、处理完毕之后,把数据的更改反馈给View层
  • 6、View层再将这个修改再页面上渲染,从而反馈给客户
  • 4、视图可以直接和模型进行交互,直接操作模型获取数据的操作,因此这和操作对于标准层次风格来说,这就是跨层次的对接了,所以这个耦合对比较高 。
MVC中存在的问题就是视图可以直接操作模型,从而导致跨层级滴哦安永,而MVP的提出,正是解决这个跨层级的问题的 。它是MVC的一直变种 。
2、MVP架构风格什么是MVP?
  • MVP是MVC的变种
  • MVP实现了View和Model之间的解耦(View不直接使用Model,修改View不会影响Model)
  • MVP更好的支持单元测试,因为逻辑在P中,可以脱离View来测试逻辑,可以将一个P用于多个V,而不需要修改P的逻辑 。
  • MVP中V要处理界面事件,业务逻辑在P中,MVC中界面事件交由C处理 。

软件架构设计:B/S层次架构之MVC/MVP/MVVM

文章插图
其实现在我们前后端分离之后,如果在不使用数据双向绑定的基础上,就是典型的MVP架构风格,如果使用了数据双向绑定,那么就是MVVM架构风格了 。
3、MVVM架构风格
软件架构设计:B/S层次架构之MVC/MVP/MVVM

文章插图
MVVM跟MVP的操作思想其实没有一些本质性的区别了,只是多实现了一个双向数据绑定技术 。
4、富互联网应用(RIA)