zoukankan      html  css  js  c++  java
  • MVC模式

    描述

    MVC模式,熟悉java的web开源框架springMVC的人对这个模式肯定不陌生,顾名思义,M:model(模型),V:view(视图),C:controller(控制器),这是一种按照逻辑对程序进行分层的思想。把对model的定义、操作和展示完美的分开,这样能清晰的分离开不同的业务逻辑层次。

    实例

    假设我们有一个学生(student)类,现在要对学生类进行改写和展示,那么我们就可以用MVC模式实现这个需求

    //M-model
    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;
       }
    }
    
    //V-view
    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);
       }
    }
    
    //C-controller
    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());
       }    
    }
    
    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: Robert
    Roll No: 10
    Student: 
    Name: John
    Roll No: 10
    

      

    代码来源: 特别感谢 菜鸟教程java设计模式之MVC模式

  • 相关阅读:
    通信中的相干与非相干
    OFDM为什么要在频域内插后做fftshift
    OFDM为什么把高频子载波作为保护频带
    辛几何
    奇文共欣赏
    6G新技术
    高扇出导致的系统异常解决方法

    线程与守护线程
    进程之间的通行
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7985815.html
Copyright © 2011-2022 走看看