Java設計模式
Java工廠設計模式
Java抽象工廠模式
Java單例模式
Java建造者(Builder)模式
Java原型模式
Java適配器模式
Java橋接模式
Java過濾器模式(條件模式)
Java組合模式
Java裝飾模式
Java門面模式(或外觀模式)
Java享元模式(Flyweight Pattern)
Java責任鏈模式
Java命令模式
Java迭代器模式
Java中介者模式(Mediator Pattern)
Java解釋器模式
Java備忘錄模式
Java觀察者模式
Java狀態模式
Java空對象模式
Java策略模式
Java模板模式
Java訪問者模式
Java MVC模式
Java業務代理模式
Java組合實體模式
Java數據訪問對象模式
Java前端控制器模式
Java攔截過濾器模式
Java服務定位器模式
Java傳輸對象模式
Java MVC模式
MVC模式表示:模型 - 視圖 - 控制器模式。此模式用於分離應用程序的問題。
- 模型(Model) - 模型表示攜帶數據的對象或JAVA POJO。如果其數據改變它也可以具有邏輯來更新控制器。
- 視圖(View) - 視圖表示模型包含的數據的可視化層。
- 控制器(Controller) - 控制器對模型和視圖都有起作用。它控制數據流進入模型對象,並在數據更改時更新視圖。它保持視圖和模型分開,也是視圖和模型的中間層。
實現實例
在這個實例中,將創建一個作爲模式的Student
對象. StudentView
將是一個可以在控制檯上打印學生詳細信息的視圖類,StudentController
是負責在Student
對象中存儲數據並相應地更新 StudentView
視圖的控制器類。
MVCPatternDemo
這是一個演示類,將使用StudentController
來演示MVC模式的使用。
MVC模式示例的結構如下圖所示 -
第1步
創建一個模型,其代碼如下 -
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步
創建一個視圖,其代碼如下 -
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步
創建一個控制器,其代碼如下 -
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
方法來演示MVC設計模式的使用。
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步
驗證輸出,執行上面的代碼得到以下結果 -
Student:
Name: Robert
Roll No: 10
Student:
Name: John
Roll No: 10