鍍金池/ 教程/ Java/ Java MVC模式
Java前端控制器模式
Java工廠設(shè)計(jì)模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對(duì)象模式
Java迭代器模式
Java責(zé)任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計(jì)模式
Java空對(duì)象模式
Java數(shù)據(jù)訪問對(duì)象模式
Java訪問者模式
Java組合實(shí)體模式
Java服務(wù)定位器模式

Java MVC模式

MVC模式表示:模型 - 視圖 - 控制器模式。此模式用于分離應(yīng)用程序的問題。

  • 模型(Model) - 模型表示攜帶數(shù)據(jù)的對(duì)象或JAVA POJO。如果其數(shù)據(jù)改變它也可以具有邏輯來(lái)更新控制器。
  • 視圖(View) - 視圖表示模型包含的數(shù)據(jù)的可視化層。
  • 控制器(Controller) - 控制器對(duì)模型和視圖都有起作用。它控制數(shù)據(jù)流進(jìn)入模型對(duì)象,并在數(shù)據(jù)更改時(shí)更新視圖。它保持視圖和模型分開,也是視圖和模型的中間層。

實(shí)現(xiàn)實(shí)例

在這個(gè)實(shí)例中,將創(chuàng)建一個(gè)作為模式的Student對(duì)象. StudentView將是一個(gè)可以在控制臺(tái)上打印學(xué)生詳細(xì)信息的視圖類,StudentController是負(fù)責(zé)在Student對(duì)象中存儲(chǔ)數(shù)據(jù)并相應(yīng)地更新 StudentView 視圖的控制器類。

MVCPatternDemo這是一個(gè)演示類,將使用StudentController來(lái)演示MVC模式的使用。

MVC模式示例的結(jié)構(gòu)如下圖所示 -

第1步

創(chuàng)建一個(gè)模型,其代碼如下 -
Student.java

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

第2步

創(chuàng)建一個(gè)視圖,其代碼如下 -
StudentView.java

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

第3步

創(chuàng)建一個(gè)控制器,其代碼如下 -
StudentController.java

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

第4步

使用StudentController方法來(lái)演示MVC設(shè)計(jì)模式的使用。
MVCPatternDemo.java

public class MVCPatternDemo {
   public static void main(String[] args) {

      //fetch student record based on his roll no from the database
      Student model  = retriveStudentFromDatabase();

      //Create a view : to write student details on console
      StudentView view = new StudentView();

      StudentController controller = new StudentController(model, view);

      controller.updateView();

      //update model data
      controller.setStudentName("John");

      controller.updateView();
   }

   private static Student retriveStudentFromDatabase(){
      Student student = new Student();
      student.setName("Robert");
      student.setRollNo("10");
      return student;
   }
}

第5步

驗(yàn)證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10