M:Model模型
V:View视图
C:Controller控制器
MVCPatternDemo
例:创建一个作为模型的Student对象。StudentView视图类:把学生详细信息输出到控制台【显示】;StudentController控制器类:负责存储数据到student对象中,并相应地更新视图StudentView。
1、创建模型
//Student.java
public class Student(){
private String rollNo;
private String name;
public void setName(String name){
this.name= name;
}
public String getName(){
return name;
}
public void setrollNo(String rollNo){
this.rollNo=rollNo;
}
public String getrollNo(){
return rollNo;
}
}
2、创建视图
显示。 模型包含的数据的可视化。
//StudentView.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);
}
}
3、创建控制器
作用于模型和视图上。控制数据流向模型对象,并在数据变化时更新视图。它使视图和模型分离开。
//StudentController.java
public class StudentController(){
private Student model;//只声明?不new?
private StudentView view;//
StudentController(Student model, StudentView view){//这儿带参初始化
this.model= model;
this.view= view;
}
public String getStudentName(){
//错误!return model.name;肯定不呢个在这直接访问model的数据阿我脑袋
return model.getName();
}
public void setStudentName(String name){
//错了。。model.name= name;
model.setName(name);
}
public String getStudentRollNo(){
//错了。。return model.rollNo;
return model.getRollNo();
}
public void setStudentRollNo(String rollNo){
//错了。。model.rollNo= rollNo;
model.setRollNo(rollNo);
}
public void updateView(){
//错了。。view.printStudentDetail(model.name, model.rollNo);
view.printStudentDetail(model.getName(),model.getRollNo());
}
}
4、Demo演示MVC设计模式的用法
用 控制器 方法演示MVC设计模式的用法
//MVCPatternDemo.java
public class MVCPatterDemo{
public static void main(){
//从数据库获取学生记录==》模型
Student model= retrieveStudentFromeDatabase();
//创建一个视图:把学生详细信息输出到控制台==》视图
StudentView view= new StudentView();
//用控制器
StudentController controller= new StudentControll(model, view);
controller.updateView();
//更新模型数据
controller.setStudentName("zhao");
controller.updateView();
}
//从数据库获取学生记录
public static Student retrieveStudentFromDatabase(){
Student student= new Student();
student.setName("chen");
student.serRollNo("01");
return student;
}
/*输出:
Student:
Name: chen
Roll No: 01
Student:
Name: zhao
Roll No: 01
*/
}