`
daur
  • 浏览: 15606 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

MVC中的pull和push

    博客分类:
  • MVC
阅读更多

(原文: http://www.guyrutenberg.com/2008/04/26/pull-vs-push-mvc-architecture/)

 

MVC 中的 Push Pull 主要是用来描述 View Controller 之间的关系。

 

Push 模式, controller 来解析用户的行为并且产生相应的数据,并将数据推送到 view 中。

 

Pull 模式,这个模式假设用户需要某种 output ,例如一组数据库中的列表信息, view 层将访问 controller 以获得数据,并最终将数据展示给相应的用户。这看起来更像是从 controller 中把数据拉出来。

 

大多数的 web 框架只是实现了一种模式,因为乍一看,两种模式都可以满足用户各类需求。但实际上在某些情况下,二选一的决定才是最合适的。

 

例如,用户希望执行某个特别的动作,好比新增一条回复,他最关心的是这个动作被执行,而对于是否新增成功的反馈信息如何展示并不那么关心。对于开发者来说,希望用户发起一个特别的动作后,会在众多的 controller 中有一个特别的方法可以被 map 到。当某个 controller 在把 action 带的执行结果 push view 时,对应的 view 并不关心到底是谁把数据 push 过来。所以这种情况下, push 模式就更加合适,因为用户的行为被框架解析到一个特别的 controller 来处理,并且 controller 负责把数据 push view 中。

 

Pull 当然也有其适应的场合。试想用户希望获取客户及客户购买商品的列表,用户希望特别的 output 。最好的解决方案是将用户的请求交给 view 处理,然后由 view 利用不同的 controller 来产生用户期望的 output (一个 controller 用来处理 customer 列表,一个 controller 用来处理商品列表 )。那么此类用户请求的处理方式就是通过 view controller 中把数据 pull 出来完成的。

 

诚然,上述两个例子都可以通过另外一个模式来实现,但那个样做会比较复杂。总的来说, push 在处理用户请求的任务时比 pull 要更合适一些,而 pull 在处理用户对数据展示的请求时较 push 更强力些。

分享到:
评论

相关推荐

    SSH Project

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个"SSH Project"是一个使用Eclipse开发环境搭建的项目,旨在演示和实践如何将这三个框架有效地整合在一起,以实现...

    main_mvc:在SpringMVC上使用GitHub进行项目管理

    本教程将聚焦于如何在Spring MVC项目中结合GitHub进行有效的项目管理和协作。Spring MVC是Java Web开发中的一个强大框架,而GitHub则是全球领先的代码托管平台,提供了强大的版本控制功能和丰富的协作工具。 **一、...

    [C#.NET2005]VS2005中使用水晶报表和水晶报表使用指南 word格式

    本文将详细介绍如何在VS2005中使用水晶报表,包括拉模式(PULL)和推模式(PUSH)两种主要方法。 1. **拉模式(PULL)**: - 在拉模式下,报表的数据源来自于报表文件内部的SQL语句,它直接从数据库中提取数据。...

    参加javaweb比赛的项目.zip

    参赛者需要熟悉Git的基本命令,如clone、commit、push、pull和branch等。 8. **部署与测试**:参赛者还需要知道如何在服务器上部署JavaWeb应用,例如使用Tomcat或Jetty服务器。同时,单元测试和集成测试(如JUnit和...

    Java课设大作业电商

    学生需要掌握基本的Git命令,如clone, pull, push, commit和branch。 9. **部署**:最后,学生需要学会如何将应用部署到服务器,如Tomcat服务器,理解WAR或EAR文件格式。 10. **文档编写**:良好的编程习惯还包括...

    javaweb投票统计模块源代码

    理解版本控制的基本操作如commit、push、pull等,对于团队开发至关重要。 10. **文档编写**:内含的详细说明书可能是对模块功能、使用方法和API接口的说明,这对于理解和使用这个模块非常关键。开发者应学会编写...

    java毕业设计&课设-煎蛋.zip

    熟悉Git的基本命令如clone、commit、push、pull等是必要的。 7. **部署与运行**:项目部署视频将指导你如何在本地环境或云服务器上配置和运行项目,可能涉及Tomcat或Jetty等Web服务器,以及Linux操作系统的一些基本...

    Java使用SWT JFreeChart控件实现的小游戏.zip

    了解基本的Git命令,如clone、commit、push和pull,对于获取和理解项目历史至关重要。 10. **文档和注释**:良好的编程习惯包括编写清晰的代码注释和项目文档。通过阅读源代码和文档,可以理解项目的结构和设计决策...

    truezip-file-7.6.5.zip

    6. **Git版本控制**:了解Git的基本命令,如clone、commit、push、pull等,以及master分支的意义和作用。 7. **开源许可证**:熟悉常见的开源许可证,如Apache 2.0、MIT、GPL等,理解它们对项目使用和分发的限制。 ...

    OFO共享单车(Swift版).zip

    - Git:使用Git进行版本控制,理解和使用常见的Git命令如`commit`, `push`, `pull`等。 项目"OFO共享单车"可能涉及到以上多个方面,包括但不限于用户登录注册、地图定位共享单车、扫码解锁、骑行计费等功能。...

    java项目实战练习小项目

    熟悉Git的基本命令,如clone、commit、push和pull,将有助于团队合作和代码管理。 8. **构建工具** Maven或Gradle是Java项目的常用构建工具,它们自动化构建过程,管理依赖关系,生成报告等。学习如何配置和使用...

    RuoYi-Vue项目学习

    了解基本的Git命令,如clone、commit、push、pull等,对协同开发非常有帮助。 通过深入学习和实践RuoYi-Vue项目,你可以全面提升自己在Java后端开发与Vue.js前端开发的技能,同时掌握现代Web应用的开发流程和最佳...

    仿当当网源码

    7. **版本控制**:了解Git的基本操作,如clone、commit、push、pull等,以及如何协同开发和解决冲突。 8. **项目部署**:学习如何配置Tomcat服务器,打包WAR文件,并将项目部署到服务器上运行。 9. **测试**:掌握...

    适合java新手入门练习的java web个人网站项目

    了解Git的基础操作,如clone、commit、push和pull,可以帮助你管理代码版本和协作开发。 10. **项目构建工具**:Maven或Gradle可能是用来管理项目的依赖和构建流程的。了解它们的配置和命令,能够自动化构建和测试...

    ios-日期选择.zip

    理解Git版本控制系统的基本操作(如clone、commit、push、pull)对于开发者来说是基础技能,也是协同开发的关键。 6. **MVC(Model-View-Controller)设计模式**: iOS应用通常采用MVC架构,其中Model处理数据,...

    基于PHP的二开要饭系统网站开源版源码.zip

    掌握基本的Git命令如clone、pull、push、commit和branch,对于获取最新代码和提交改动很有帮助。 9. 自定义功能:二开意味着在现有基础上添加新的功能或改进现有功能。这需要理解系统的业务逻辑,并能够编写符合...

    Struts2+Spring2+Hibernate3

    Struts2的核心特点是其Pull-MVC模式,与传统的Struts1.x的Push模式不同。在Struts2中,Action类不再需要继承特定的Action类或实现特定接口,而是通过Getter和Setter方法来处理请求参数。此外,Struts2还提供了丰富的...

    Java项目开发与毕业设计指导

    学生应掌握基本的Git命令,如clone、commit、push和pull,以及解决冲突的方法。 8. **项目管理与文档**:了解敏捷开发方法(如Scrum或Kanban)对于有效项目管理至关重要。同时,清晰的项目文档,包括需求文档、设计...

    java项目实战练习上手项目

    掌握Git的基本命令,如clone、commit、push、pull和merge,可以帮助团队协同开发,并有效管理代码版本。 8. **单元测试与集成测试**:编写测试用例是确保代码质量的重要手段。JUnit是Java的常用单元测试框架,而...

    基于PHP的彩虹秒赞php版源码.zip

    10. **版本控制**:项目可能使用Git进行版本控制,了解基本的Git命令(如clone、commit、push、pull)有助于获取和管理源码。 11. **性能优化**:在处理大量用户请求时,了解缓存策略(如PHP的APC或Memcached)、...

Global site tag (gtag.js) - Google Analytics