Java

设计模式之MVC模式

2019-07-18  本文已影响0人  盗梦者_56f2

简介

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

实现

创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。演示类MVCPatternDemo使用 StudentController 来演示 MVC 模式的用法。


MVC模式

代码实现

//创建模型。
//StudentModel.java
public class StudentModel {
    private String rollNo;
    private String name;

    public String getRollNo() {
        return rollNo;
    }

    public String getName() {
        return name;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public void setName(String name) {
        this.name = name;
    }
}
//创建视图。
//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);
   }
}
//创建控制器。
//StudentController.java
public class StudentController {
    private StudentModel model;
    private StudentView view;

    public StudentController(StudentModel 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 方法来演示 MVC 设计模式的用法。
//MVCPatternDemo.java
public class MVCPatternDemo {
    public static void main(String[] args) {
        //从数据库获取学生记录
        StudentModel model  = retrieveStudentFromDatabase();

        //创建一个视图:把学生详细信息输出到控制台
        StudentView view = new StudentView();

        StudentController controller = new StudentController(model, view);

        controller.updateView();

        //更新模型数据
        controller.setStudentName("John");

        controller.updateView();
    }
    private static StudentModel retrieveStudentFromDatabase(){
        StudentModel studentModel = new StudentModel();
        studentModel.setName("Robert");
        studentModel.setRollNo("10");
        return studentModel;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读