描述
MVC模式,熟悉java的web开源框架springMVC的人对这个模式肯定不陌生,顾名思义,M:model(模型),V:view(视图),C:controller(控制器),这是一种按照逻辑对程序进行分层的思想。把对model的定义、操作和展示完美的分开,这样能清晰的分离开不同的业务逻辑层次。
实例
假设我们有一个学生(student)类,现在要对学生类进行改写和展示,那么我们就可以用MVC模式实现这个需求
//M-modelpublic 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; ??}}//V-viewpublic class StudentView { ??public void printStudentDetails(String studentName, String studentRollNo){ ?????System.out.println("Student: "); ?????System.out.println("Name: " + studentName); ?????System.out.println("Roll No: " + studentRollNo); ??}}//C-controllerpublic 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()); ??} ???}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; ??}}//输出结果:Student: Name: RobertRoll No: 10Student: Name: JohnRoll No: 10
代码来源: 特别感谢 菜鸟教程java设计模式之MVC模式
MVC模式
原文地址:http://www.cnblogs.com/K-artorias/p/7985815.html