MVC开发模式学习
标题: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去处理,同时将处理好的数据输出到对应的视图显示给用户。==
(手绘图有点点丑)
下面举个栗子:
我将创建一个作为模型的 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(); //展示
}
}
上一篇: php利用递归列出所有文件和目录
下一篇: MVC开发模式简介