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 ?* @Description10 ?* @Date 2018/9/28 下午2:5811 ?*/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 ?* @Description10 ?* @Date 2018/9/28 下午3:0311 ?*/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模式
原文地址:https://www.cnblogs.com/NullCXY/p/9718830.html