設計模式:MVC模式
阿新 • • 發佈:2018-09-28
vat author nbsp 執行 獲取 gets inter 因此 ota
MVC模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用於應用程序的分層開發。
MVC模式的這三個部分的職責非常明確,而且相互分離,因此每個部分都可以獨立地改變而不影響其他部分,從而大大提高應用的靈活性和重用性。
Model(模型):
指模型表示業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,模型與數據格式無關,這樣一個模型能為多個視圖提供數據,由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。
View(視角):
指用戶看到並與之交互的界面。比如由html元素組成的網頁界面,或者軟件的客戶端界面。MVC的好處之一在於它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,它只是作為一種輸出數據並允許用戶操縱的方式。
Controller(控制器):
指控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後再確定用哪個視圖來顯示返回的數據。
例子:
步驟一:創建模型StaffModel.java
1 package com.cxy.model; 2 3 /** 4 * @author cxy 5 * @Description 6 * @Date 2018/9/28 下午2:47 7 */ 8 public class StaffModel { 9 private String name;10 private String sex; 11 private int age; 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public String getSex() { 22 return sex; 23 } 24 25 public void setSex(String sex) {26 this.sex = sex; 27 } 28 29 public int getAge() { 30 return age; 31 } 32 33 public void setAge(int age) { 34 this.age = age; 35 } 36 }
步驟二:創建視圖StaffView.java
1 package com.cxy.view; 2 3 import java.util.logging.Logger; 4 5 /** 6 * @author cxy 7 * @Description 8 * @Date 2018/9/28 下午2:52 9 */ 10 public class StaffView { 11 public void printStaffInfo(String name,String sex,int age){ 12 System.out.println("Name:"+name); 13 System.out.println("sex:"+sex); 14 System.out.println("age:"+age); 15 } 16 }
步驟三:創建控制器StaffController.java
1 package com.cxy.controller; 2 3 import com.cxy.model.StaffModel; 4 import com.cxy.view.StaffView; 5 import jdk.nashorn.internal.objects.annotations.Constructor; 6 7 /** 8 * @author cxy 9 * @Description 10 * @Date 2018/9/28 下午2:58 11 */ 12 public class StaffController { 13 private StaffModel staffModel; 14 private StaffView staffView; 15 16 public StaffController(StaffModel staffModel,StaffView staffView){ 17 this.staffModel = staffModel; 18 this.staffView = staffView; 19 } 20 21 public String getStaffName() { 22 return staffModel.getName(); 23 } 24 25 public void setStaffName(String name) { 26 staffModel.setName(name); 27 } 28 29 public String getStaffSex() { 30 return staffModel.getSex(); 31 } 32 33 public void setStaffSex(String sex) { 34 staffModel.setSex(sex); 35 } 36 37 public void setStaffAge(int age) { 38 staffModel.setAge(age); 39 } 40 41 public int getStaffAge() { 42 return staffModel.getAge(); 43 } 44 45 public void printInfo(){ 46 staffView.printStaffInfo(staffModel.getName(),staffModel.getSex(),staffModel.getAge()); 47 } 48 }
步驟四:創建測試類來演示MVC模式的用法StaffTest.java
1 package com.cxy.test; 2 3 import com.cxy.controller.StaffController; 4 import com.cxy.model.StaffModel; 5 import com.cxy.view.StaffView; 6 7 /** 8 * @author cxy 9 * @Description 10 * @Date 2018/9/28 下午3:03 11 */ 12 public class StaffTest { 13 public static void main(String[] argc){ 14 //獲取角色數據 15 StaffModel staffModel = createRole(); 16 //創建視圖,展示角色信息到控制臺 17 StaffView staffView = new StaffView(); 18 19 StaffController staffController = new StaffController(staffModel,staffView); 20 21 staffController.printInfo(); 22 23 //修改角色 24 staffController.setStaffName("lyj"); 25 staffController.setStaffSex("女"); 26 staffController.setStaffAge(18); 27 staffController.printInfo(); 28 } 29 30 public static StaffModel createRole(){ 31 StaffModel staffModel = new StaffModel(); 32 33 staffModel.setName("cxy"); 34 staffModel.setSex("男"); 35 staffModel.setAge(25); 36 return staffModel; 37 } 38 }
執行結果:
設計模式:MVC模式