
MVC模式简介
MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基本的部分。
分别为:
- 模型Model
- 视图View
- 控制器Controller
主要为以上三大部分组成,如下图所示:

MVC模式优缺点
1.MVC模式优点
1)多个视图共享一个模型,大大提高代码的可重用性;
2)三个模块相互独立,改变其中一个不会影响其他两,所以依据这种设计模式,能构建良好的松耦合性的组件;
3)控制器提高了应用程序的灵活性和可控制性:控制器可以用来连接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提高强有力的手段。
2.MVC模式缺点
1)增加了系统结构和实现的复杂性
对于简单页面,严格遵循mvc,会增加结构的复杂性。
2)视图与控制器过于紧密的连接
视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的。
3)视图对模型数据的低效率访问
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据,对未变化数据的不必要的频繁访问,也将损害操作性能。
MVC模式模型

1.模型(Model)
模型封装了数据及对数据的操作,可以直接对数据库进行访问。
简要的讲:就是一个或多个javabean对象,用于存储数据和业务逻辑。
2.视图(View)
视图负责展示,没有具体的程序逻辑,比如:一个JSP页面想控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据。
3.控制器(Controller)
控制器用于控制程序的流程,将模型中的数据展示到视图中。
比如:Servlet对象根据视图提交的请求进行控制,即将请求转发给业务逻辑的javabean,并将处理记过存放到实体模型javabean中,输出给视图显示。
MVC模式示例
1.创建模型
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.创建视图
public class StudentView {
public void printStudentDetails(String studentName,){
System.out.println("Student: ");
System.out.println("Name: " + studentName);
}
}
3.创建控制器
public class StudentController {
private Student model;
private StudentView view;
public StudentController(Student model, StudentView view){
this.model = model;
this.view = view;
}
public void setStudentName(String name){
model.setName(name);
}
public String getStudentName(){
return model.getName();
}
public void updateView(){
view.printStudentDetails(model.getName());
}
}
4.MVC模型演示
public class MVCPatternDemo {
public static void main(String[] args) {
//从数据库获取学生记录
Student model = retrieveStudentFromDatabase();
//创建一个视图:把学生详细信息输出到控制台
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
controller.updateView();
//更新模型数据
controller.setStudentName("mikechen");
controller.updateView();
}
private static Student retrieveStudentFromDatabase(){
Student student = new Student();
student.setName("mikechen");
return student;
}
}
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。