从刚开始编程,就接触到MVC这个概念。最直观的理解就是Model(模型数据)、View(视图)、Controller(控制器),但是mvc究竟是什么?
1. 简介
MVC最早提出是在客户端软件之中,以电脑附带的计算器为例:
1. 计算器的界面就是View
2. 用户点击 “1 + 2 =”的时候,调用了Controller进行逻辑运算。
3. controller算出了数据结果,也就是Model
4. Model的数据改变了,就会通知到View,这时候计算器的结果区域就会显示出结果了。
2. MVC究竟是什么?
那么MVC是设计模式吗?还是框架?觉得两种都不是,而是一种架构,一个架子,可以分层的去设计,使各个层面解耦合。例如计算加法的逻辑写错成了乘法,那么只需要去更改Controller这一层就好了,而不会影响到View和Model。
MVC还有一些衍生的概念MVP,MVVM等。不同的情景下,用不同的方式去实现。
3. MVC和三层架构是什么关系?
三层架构:
Presentation tier+ Application tier + Data tier(展现层,应用层,数据访问层)
实际上MVC只存在三层架构的展现层。
M
Model实际上是数据模型,是包含数据的对象(Value Object)。在springmvc里有一个专门的类叫Model,就是专门存放数据的,用来和View之间进行传值。也可以理解为controller层返回的值对象。
V
View包含JSP、freemarker、Velocity、Thymeleaf等,也就是指的对象。
C
当然就是springmvc中的controller类了,用来处理逻辑。controller中一般调用了service等进行了业务逻辑的处理,拿到返回的数据模型交给页面来进行数据展示。