>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26645 个阅读者 刷新本主题
 * 贴子主题:  Java设计模式:MVC 模式 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2019-08-10 16:04:52     消息  查看  搜索  好友  邮件  复制  引用

  

MVC 模式

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。    
  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小    

实现

     我们将创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。

     MVCPatternDemo,我们的演示类使用 StudentController 来演示 MVC 模式的用法。

    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

步骤 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 )   {

       // 从数据库获取学生记录  
       Student   model   =  retrieveStudentFromDatabase ( ) ;

       // 创建一个视图:把学生详细信息输出到控制台  
       StudentView   view  =  new   StudentView ( ) ;

       StudentController   controller  =  new   StudentController ( model ,  view ) ;

       controller . updateView ( ) ;

       // 更新模型数据  
       controller . setStudentName ( " John " ) ;

       controller . updateView ( ) ;
    }

    private   static   Student   retrieveStudentFromDatabase ( ) {
       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



程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-21 11:59:53 重新编辑]
  Java面向对象编程-->类的生命周期
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->Vue简介
  Vue3开发-->Vue Router路由管理器
  Java集合框架学习---深入探究ArrayList源码
   JAVA进阶之IO模型深入解析
  观察者模式和发布订阅模式的区别
  关于新书
  JDBC API中的桥接模式
  如何优雅地打印一个Java对象?
  Eclipse使用指南:创建Java项目的步骤
  Java设计模式:组合模式
  5个非常有挑战性的Java面试题
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java入门实用代码:获取数组长度
  JAVA设计模式之备忘录模式原理与用法详解
  通过Java读取Excel数据
  正则表达式【匹配非字母和数字】
  初学者该学哪种编程语言
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。