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(), 47 staffModel.getAge());
48 }
49 }
複製程式碼
步驟四:建立測試類來演示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 }
複製程式碼
執行結果: