欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MVC开发模式学习

程序员文章站 2022-04-02 10:42:45
...

标题:MVC开发模式学习笔记 作者:摘星
MVC(Model-View-Controller)模式最早由 Trygve Reenskaug 在 1978 年提出,在 20 世纪80 年代是程序语言 Smalltalk 的一种内部架构。后来 MVC 被其他语言所借鉴,成为了软件工程中的一种软件架构模式。MVC 把 Web 应用系统分为 3 个基本部分

== Model ----View -----Controller (模型 —视图 —控制器) ==

== mvc 设计模式是强制性的将程序的输入、处理、输出分开 ==

模型(Model): 用于封装与应用程序的业务逻辑处理相关的数据,以及对数据的处理方法 ,在web应用程序中用于处理应用程序的数据逻辑部分,Model 只提供接口,,通过这些接口可以使用Model的所有功能 Model 不依赖于View 和Controller ,反而View 和Controller都要使用Model的功能正常运行,

视图(View) :负责数据的显示和呈现,View是对用户的直接输出,View对应web项目中的浏览器, MVC中的一个Model通过为多个View提供服务。
== 注:在视图中,不提供任何的数据逻辑处理。==

控制器(Contrller):负责从用户端收集用户的输入,可以理解为View 的反向功能,当用户的输入导致View发生变化时,这种变化必须要经过Model反映给View 。也就是说View和Contrller 互不干扰,一切数据交互以Model为数据中心.

== MVC的处理顺序是:首先是用户通过视图将参数提交到控制器,控制器调用对应的Model去处理,同时将处理好的数据输出到对应的视图显示给用户。==

(手绘图有点点丑)
MVC开发模式学习
下面举个栗子:
我将创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。

Student:学生类 对应MVC的模型层

package com.dj.MVC;

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;
    }
}

StudentView :对应MVC的视图层

package com.dj.MVC;

// 视图层
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: 对应控制层

package com.dj.MVC;
// 控制器
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());
    }

}

测试方法

package com.dj.MVC;

public class MVCPatternDemo {
    private static Student retrieveStudentFromDatabase (){
        Student student =new Student();
        student.setName("雾晴");
        student.setRollNo("10");
        return student;
    }
    public static void main (String[] args) {
        Student model =retrieveStudentFromDatabase();

        // 创建视图
        StudentView view =new StudentView();
        StudentController controller=new StudentController(model,view);

        controller.updateView(); //展示

        controller.setStudentName("摘星");
        controller.setStudentRollNo("100");

        controller.updateView(); //展示
    }
}

MVC开发模式学习