MVC模式全称为Model-View-Controller模式,其中:
Model(模型):数据对象。
View(视图):可视化数据,即用户可以直观看到的数据。
Controller(控制器):对数据对象(Model)进行操作;在数据对象(Model)变化时更新视图(View)。
我们使用一个例子来理解MVC模式(该例引用自http://www.runoob.com/design-pattern/mvc-pattern.html):
public class Student { private String rollNo; private String name; public String getRollNo() { return rollNo; } public void setRollNo(String rollNo) { this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
创建模型:Student.java
public class StudentView { //将数据对象打印到屏幕上 public void printStudentDetails(String studentName, String studentRollNo){ System.out.println("Student: "); System.out.println("Name: " + studentName); System.out.println("Roll No: " + studentRollNo); }}
创建视图:StudentView
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 setStudentRollNo(String rollNo){ model.setRollNo(rollNo); } public String getStudentRollNo(){ return model.getRollNo(); } public void updateView(){ view.printStudentDetails(model.getName(), model.getRollNo()); } }
创建控制器:StudentController
public class MVCPatternDemo { public static void main(String[] args) { //从数据库获取学生记录 Student model = retriveStudentFromDatabase(); //创建一个视图:把学生详细信息输出到控制台 StudentView view = new StudentView(); StudentController controller = new StudentController(model, view); controller.updateView(); //更新模型数据 controller.setStudentName("John"); controller.updateView(); } //模拟读取数据库 private static Student retriveStudentFromDatabase(){ Student student = new Student(); student.setName("Robert"); student.setRollNo("10"); return student; }}
模拟使用MVC设计模式