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

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java mvc模式_Java MVC模式相关推荐

  1. 状态模式java 在线投票_Java 状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模 ...

  2. java dao模式_Java DAO 模式

    DAO 模式 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问.通俗来讲,就是将数据库操作都封装起来. 对外提供相应的接口 在面向对象 ...

  3. java动态代理_Java代理模式及动态代理详解

    Java的动态代理在实践中有着广泛的使用场景,比如最场景的Spring AOP.Java注解的获取.日志.用户鉴权等.本篇文章带大家了解一下代理模式.静态代理以及基于JDK原生动态代理. 代理模式 无 ...

  4. java 值对象_java 中设计模式(值对象)的实例详解

    java 中设计模式(值对象)的实例详解 应用场景:在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设 ...

  5. java单态模式_Java单态模式

    Java的单态模式 Singletom 作用:保证在Java应用程序中,一个Java类只有一个实例存在:所以一般单态类会提供一个返回该类实例的方法.提供一个对对象的全局访问指针. 优点:节省内存,限制 ...

  6. 策略模式java 用例_java策略模式简单用例

    运用java策略模式一个小程序 /** * */ package Strategy; import java.util.Arrays; /** * @author HuangRong * @Funti ...

  7. java 模板模式_Java模板模式(Template模式)

    Java模板模式(Template模式) 下一节> Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 其实Java的抽象类本来就是Template模式,因此使 ...

  8. java state用法_Java状态模式(State模式)

    State的定义:不同的状态,不同的行为:或者说,每个状态有着相应的行为. 何时使用状态模式State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elsei ...

  9. java atm模拟系统_Java RPC模式开发一个银行atm模拟系统

    采用rpc模式开发一个银行atm模拟系统. 系统主要提供一个服务Card,该服务接口可以提供登录.查询.取钱.存钱等功能.服务接口的设计和实现自定义. Atm客户端功能需求: 1.ATM可以实现用户登 ...

最新文章

  1. NBT:Rob Knight团队发表微生物组数据降维新方法
  2. Windows Azure Cloud Service (19) 动态指定WCF的发布地址
  3. 第10课:优化神经网络——如何防止过拟合
  4. python列表操作
  5. 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
  6. c++程序设计中多态与虚函数知识点
  7. SSL:Self-Supervised Learning(自监督学习)是什么?
  8. Vector使用方法简单整理
  9. Scrapy框架(持久化,去重,深度控制,cookie)
  10. js html 单引号,JS 和 HTML 中的单引号与双引号
  11. js赋值时特殊字符完美处理方案
  12. 黑马程序员_Java学习日记num8
  13. ONVIF协议--ONVIF协议简介
  14. 实时监控网页变化,并增加多种提示信息
  15. matlab已知随机样本求总体均值与方差的矩估计值(例子应用)
  16. SAP中常用到的会计知识
  17. CAD不支持实时调试
  18. FedEx v20.0.7654的CData驱动程序
  19. stream流的常用方法
  20. 我用scratch做了个二分查找

热门文章

  1. 电气毕业生在国家电网都干啥工作?
  2. 使用verilog实现基于FPGA的TDC设计
  3. 基于xilinx vivado的XADC IP设置使用详解
  4. Linux如何访问mmio空间,一文读懂Linux下如何访问I/O端口和I/O内存
  5. oracle 转换成csv文件,如何将csv转换为oracle中的表
  6. c语言枚举入门,C语言入门之枚举与位运算(1)
  7. eclipse中无法移除jar包_IDEA中已配置阿里镜像,但maven无法下载jar包的问题
  8. java 短链接实现方案_java利用百度短网址api实现URL长短互换工具类分享
  9. 线程池的简单创建和实现
  10. 计算机网络自顶向下方法【七】——链路层