MVC设计模式

MVC设计模式

1.定义

MVC设计模式,全名为‌Model-View-Controller,是一种软件设计典范,用于将业务逻辑、数据和界面显示分离,以提高代码的可维护性、可扩展性和灵活性。MVC模式将软件系统分为三个基本部分:模型(Model)、‌视图(View)和‌控制器(Controller)。

2.组成部分‌

  1. ‌模型(Model)
  • 职责:模型是应用程序中的数据部分,表示应用程序的状态和行为。
  • 特点:模型通常包括一个或多个类,封装了数据和数据操作,提供公共接口与控制器交互。模型独立于视图和控制器,不知道数据的呈现方式或用户交互方式。
  1. 视图(View)
    • 职责:视图是用户界面的一部分,表示数据的可视化呈现。
    • 特点:视图通常包括一个或多个类,用于绘制图形界面、显示数据和处理用户输入。视图只关注数据的呈现,不关注数据的来源或处理过程。
  2. ‌控制器(Controller)
    • 职责:控制器处理用户输入,调用相应的模型和视图操作。
    • 特点:控制器通常包括一个或多个类,协调用户界面和数据操作之间的交互。控制器从视图中获取用户输入,调用模型操作并更新视图。

MVC处理过程:

在这里插入图片描述

3.特点

优点:

  • 多视图共享一个模型,大大提高代码的可重用性
  • MVC三个模块相互独立,松耦合架构
  • 控制器提高了应用程序的灵活性和可配置性
  • 有利于软件工程化管理

完美的系统架构 = 松耦合 + 高重用性 + 高扩展性

缺点:

  • 原理复杂
  • 增加了系统结构和实现的复杂性
  • 视图对模型数据的低效率访问

4.实现

(jsp+servlet+javabean)

创建模型:

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

创建视图:

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

创建控制器:

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

使用 StudentController 方法:

public class MVCPatternDemo {
   public static void main(String[] args) {
 
      //从数据库获取学生记录
      Student model  = retrieveStudentFromDatabase();
 
      //创建一个视图:把学生详细信息输出到控制台
      StudentView view = new StudentView();
 
      StudentController controller = new StudentController(model, view);
 
      controller.updateView();
 
      //更新模型数据
      controller.setStudentName("John");
 
      controller.updateView();
   }
 
   private static Student retrieveStudentFromDatabase(){
      Student student = new Student();
      student.setName("Robert");
      student.setRollNo("10");
      return student;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值