1. 程式人生 > >設計模式:MVC模式

設計模式:MVC模式

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模式