精华内容
下载资源
问答
  • MVC架构模式

    2021-01-30 10:11:54
    文章首先介绍了设计模式的概念和特点,以及MVC架构的设计思想,并分析了MVC架构中包含的几种主要的模式。然后根据Web应用系统的特点,就如何应用模式MVC架构提出了一些设计思路。 面向对象技术的出现和应用大大...
  • MVC 架构模式

    2017-01-18 11:13:16
    MVC架构模式 模型 - 视图 - 控制器 (Model - View - Controller) 模型 模型代表应用程序的数据以及用于访问控制和修改这些数据的业务规则,当模型发生改变时,它会通知视图,并为视图提供查询模型相关状态的能力...

    MVC架构模式

    模型 - 视图 - 控制器 (Model - View - Controller)


    模型

    模型代表应用程序的数据以及用于访问控制和修改这些数据的业务规则,当模型发生改变时,它会通知视图,并为视图提供查询模型相关状态的能力.

    同时,它也为控制器提供访问封装在模型内部的应用程序功能的能力.

    视图

    视图用来组织模型的内容.它从模型那里获得数据并制定这些数据如何表现.当模型变化时,视图负责维护数据表现的一致性.

    视图同时将用户的请求通知控制器.

    控制器

    控制器定义了应用程序的行为.它负责对来自视图的用户请求进行解释,并把这些请求映射成相应的行为,这些行为由模型负责实现.

    展开全文
  • mvc架构模式

    2017-02-11 16:42:13
    在项目中体会backbone中的MVC 在交互角度,偷来一段话 View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 下面是在代码角度出的简图 下面是...

    在项目中体会backbone中的MVC
    在交互角度,偷来一段话

    • View 传送指令到 Controller
    • Controller 完成业务逻辑后,要求 Model 改变状态
    • Model 将新的数据发送到 View,用户得到反馈
      下面是在代码角度出的简图
      这里写图片描述

    下面是更具项目整理的代码结构,欢迎对号入座
    这里写图片描述

    参考文章
    http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

    展开全文
  • MVC架构模式ppt课件

    2011-12-23 09:35:18
    介绍了模式的分类,引出了MVC架构模式,继而介绍了:MVC架构模式的起源与设计思想、三大部分的功能与关系、MVC架构模式的实现、MVC架构模式的优缺点
  • 选用Vue做MVC架构模式

    千次阅读 2018-12-22 10:38:34
    经典的MVC架构模式 背景 选择Vue 经典MVC回顾 MVVM架构模式 front MVC架构定义 并行开发模式 结论 经典的MVC架构模式 MVC架构模式是经典设计模式中的经典,是一种编程的方法论。具有高度抽象的特征,经典MVC用...

    关键词 并行开发 代码复用 关注点分离

    经典的MVC架构模式

    MVC架构模式是经典设计模式中的经典,是一种编程的方法论。具有高度抽象的特征,经典MVC用简单的定义体现出解决复杂通用问题的办法,只有不断思考和体会才能用来解决不同情况下程序设计所遇到的问题。

    MVC不能脱离具体的框架而独自存在,把握抽象必须用具体;把握具体的内在结构和外在关系只能用抽象。

    在前端领域中有代表MVC的Anguler、代表MVVM的Vue、和代表单向数据流的React都是很棒的前端框架,分别代表了一种具体的设计模式应用,在不同的应用场景中使用对了框架才能把这些框架的特性充分的发挥出来,如果只是从字面上找对应,Anguler才是MVC的代表,Vue显然不是MVC的代表,为什么我要选用Vue来做MVC架构模式呢? 下面就来说一下为何这么做。

    背景

    我所在的部门业务场景上是分客群分产品的, 产品需求上迭代非常快,全场景一年要发布120多个版本,技术架构主要考量以下几点:

    • 产品稳定性
    • 多产品并行开发,支持4-10个产品线独立开发部署
    • 多产品公共功能可复用,保证开发效率
    • 提升用户体验

    技术架构本身的生命周期取决于业务的生命周期,好的架构模式应该是模块化的,可以针对其中的一个模块来进行优化升级,延长技术架构的生命周期就会节约很多成本。

    选择Vue

    • 1.足够的小巧,轻量,关注点聚焦,不会干扰整体项目设计架构;同时也有全家桶来做关注点分离,需要更多能力时全家桶中有可选择的项,减少重新造轮子。
    • 2.上手成本低、开发效率也很高
    • 3.Vue生态成熟和有庞大的开发者群体

    不选Angular的原因: 个人角度还是很喜欢Angular,但Angular也有一些问题, 如大版本发布太快和变化太大;大而全,这是优点也是缺点,缺点就是设计过重不利于每个团队根据实际情况基于Angular来重新设计架构,换掉其中的一部分设计,也很难让团队成员理解和适应。

    不选React的原因: 因Facebook的开源项目React嵌入了竞争防止协议,留下比较大的法务隐患,17年9月内部就抛弃了React框架,已经使用Ract的项目也要限定期限改为其他框架。即使后来FaceBook的开源协议有所改善,但这种事情还是让大家心留余悸,不能再提了。

    经典MVC回顾

    MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model)、视图(View)和控制器(Controller)

    是一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

    Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

    模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

    View(视图) 是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

    视图是用户看到并与之交互的界面。MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

    Controller(控制器) 是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

    控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

    MVVM架构模式

    MVVM模式是工程师在解决WPF应用程序开发复杂度时提出的解决方案,它实现了View和Model的自动同步,开发者不需要再手动的绑定输入监听和手动的将数据结果展示在view上,这就是双向数据绑定的优势,后来Backbone、Vue等都是MVVM模式的前端框架。

    ViewModel解决了View和Model之间转换的开发效率问题。 但是ViewModel内部的复杂度又变成了新的问题,其中一个问题就是双向数据绑定劣势。在双向数据绑定中,Model(可以理解为状态的集合) 中可以修改自己或其他Model的状态, 用户的操作(如在输入框中输入内容)也可以修改状态。这使的改变一个状态有可能会触发一连串的状态的变化,最后很难预测最终的状态是什么样的。使得代码变得很难调试。

    为了解决这个问题便有了后来的Vue 单向数据流的解决方案-Vuex。 在复杂度较高的业务上使用单向数据流来解耦View和Model的关系。


    可以看出经典MVC架构模式的重点是要解决业务逻辑复用和数据显式分离,前端MVC本质要解决的还是这两点,不同的是前端用组件化和MVVM分别来解决业务逻辑复用和数据显式分离,MVC、MVVM都要解决MV这两层的的问题。前后端分离后、前端使用单页应用就可以完成用户界面部分的管理,此时在前端架构中需要有一层来管理页面切换这就是前端MVC的Controller控制层

    MVC和MVVM本质上这是两种架构模式,是为了解决不同场景遇到的开发问题。 两者解决的问题有相似之处,MVVM中的ViewModel和MVC中的Controller作用有些相似。用Vue框架的项目引入Vuex后ViewModel的作用被弱化,MVVM和单向数据流都无法反映整个框架的架构模式。同时整体架构还要解决单页应用等问题,更需要有一个准确的理论模型,从而选择MVC架构模式来做项目架构更适合实际情况。

    front MVC架构定义

    代码库结构图

    在业务层(不包括基础组件)和经典MVC想比Front MVC的核心由Model变成了View。 View层的设计是重点,基础组件尽量使用组件特性和MVVM、避免过度设计造成层级复杂度变大;业务组件可以用EventBus的方式来处理跨层级交互的问题。 Model层由Vuex来管理,Vuex适合数据量大并且函数集中处理,管理接口数据很合适;以便明确各种方式的最佳实践范围。

    Model(模型) 是应用程序中用于处理应用程序状态管理和数据交互的部分。主要由状态管理Vuex数据交互axios实现

    View (视图) 是应用程序中业务逻辑处理和内容展示的部分。不同于经典MVC中的View,Front MVC的View层业务逻辑会比较重,这是由于前端的复用主要体现在组件上,前端框架Vue的Global API一系列特性也非常好的支撑这种组件化业务需求。这里的View层主要有基础组件库公共组件库产品组件库组成,其中前两个库是可以复用的。

    Controller(控制器) 是应用程序中处理用户交互的部分。 不同于MVC中的Controller, Front MVC的Controller层是通过路由机制加载View主要是有viewRouter来实现,再有View根据交互逻辑来控制Model层的调用。在这里View是应用程序的核心部件。

    这样设计的特点:

    • 首先实现了单页应用,用户体验交回前端管理
    • MVC各层是模块化的,可灵活调整和复用
    • 层级划分清晰,利于用最佳实践实现
    • Model层数据可复用,跨页面公共数据根据情况可只调用一次
    • View层可复用

    并行开发模式

    并行开发效率高,但产品多、开发人员多、发版频繁一定会造成冲突和相互影响,必须重点关注保证产品稳定性。控制好公共部分的改动频率和修改权限。

    解决方法:

    • 各产品库的node_module依赖项统一管理,兼容公共部分依赖项。
    • 业务公共库各产品负责人有修改权限,既保证公共部分协同开发,也保证公共部分稳定。
    • 基础组件库精心打磨,控制发版频次。
    • 只在产品库中编译项目,公共库使用git sub module的方式引入,各产品单独发布部署包。
    • 各产品单独部署。

    结论

    只要能解决问题,架构应该是越简单越好,就像经典MVC架构模式一样简洁,一样有力量。不断总结分析,寻求不同的解决方法,设计时整体考量,经常在抽象和具体之前切换角度思考,才能兼顾开发效率和技术支撑。


    本文是从项目整体设计上对MVC架构模式进行了一个实践总结,欢迎大家交流指正!

    展开全文
  • MVC架构模式实例

    2019-09-23 17:26:29
    MVC架构模式,也就是Model View Controller模式。它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新...

    一、简介

      什么是MVC呢?MVC架构模式,也就是Model View Controller模式。它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

      说起来好像是很复杂,但是我对它的理解也就是各自处理自己的任务。

      模型:负责封装并实现应用的具体功能。可以实现系统中的业务逻辑,通常可以用JavaBean来实现。

      视图:用于与用户的交互。用来将模型的内容展现给用户。用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展示给用户,相当于提供页面来与用户进行人机交互。比如用户在登陆注册界面完成信息的填报后点击确定,由此来向控制器发出这个请求。

      控制器:是Model与View之间沟通的桥梁。用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型相映射,也就是调用模型来实现用户请求的功能。然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。

      MVC模式的这三个部分的职责非常明确,而且相互分离,因此每个部分都可以独立地改变而不影响其他部分,从而大大提高应用的灵活性和重用性。

    二、目的

      使用MVC的目的是将Model和View实现代码分离,也就是前台html表现层和后台php逻辑层分离。这样做便于开发,代码优化,界面交互性好。

      归根结底,其目的就是便宜项目开发。

    三、特点

      MVC重要特点就是两种分离:1.视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)2.视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。

    四、适用环境

      做产品,做大项目的时候,最好使用,因为那时参与的人多,进行模块调用方便,而且便于管理。

    五、解决的问题

      它解决的问题有:维护难,开发速度慢,二次开发难度高,工作量大,代码复用,耦合度高,系统不灵活。

    六、解决方案

      MVC 的基本原理就是通过Controller 连接View 和Model。也就是说,当View 中显示的数据变化时(如ListView要删除某个列表项),会通知Controller,而不是直接通知Model。这时Controller接到View的通知后,会在Model 中采取相应的动作(如删除数据库中的某条记录)。如果模型的数据发生变化(如插入、删除数据库中的记录),会将变化通知控制器,然后控制器会通知视图重新显示数据。 

    七、实例

      应用于基于MVC架构模式的框架,常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF。

      以SpringMVC为例来解释下MVC在spring的工作流程中如何体现的。

      SpringMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,所以根本不需要同spring进行整合。

    SpringMVC的工作原理图:

    1).在请求离开浏览器时,会带有用户所请求的内容的信息,比如请求的URL和提交的表单信息。 
    2).SpringMVC的所有请求都会通过一个单实例的前端控制器DispatcherServlet,该Servlet将请求委托给应用程序的其他组件来执行实际的处理。 
    3).DispatcherServlet的任务是将请求发送给Spring MVC控制器。控制器是一个用于处理请求的Spring组件。在典型的应用程序中可能会有多个控制器,DispatcherServlet会根据请求所携带的URL信息来确定将请求发送给哪个控制器。一旦选择合适的控制器,DispatcherServlet会将请求发送给选中的控制器并耐心等待控制器处理完毕。 
    4).控制器在完成逻辑处理后,会返回给用户在浏览器上显示的模型数据,并且标识出用于渲染输出的视图名。最后将请求连同模型model和视图名发送回DispatcherServlet。 
    5).DispatcherServlet会使用视图解析器来将视图名匹配为一个特定的视图实现,它可能是也可能不是JSP。 
    6).DispatcherServlet将数据模型交付给特定的视图,请求的任务就完成了。 
    7).视图将使用模型数据渲染输出,这个输出会通过响应对象传递给客户端。

    例如①,小时候玩的那种卡带式游戏机,Control是主机,一般来说我买一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。View则是电视机和游戏手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,遥杆还是带震动的。Model则是游戏卡带,他决定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏代码和存储单元,都根据游戏的需要而设计。

      例如②,一个采用比例表示的用于政治选举的一个简单信息系统,它提供了一个输入数据的电子数据表和表示当前结果的几种图标。用户可以通过图形接口与系统交互。所有信息显示必须立即反应出选举数据的变化。(引用自《面向模式的软件体系结构-卷1 模式系统》)

    八、优缺点

      优点:

    1.耦合性低

    视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

    2.重用性高

      随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。MVC使开发和维护用户接口的技术含量降低。

    3.部署快

    使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

    4.可维护性高

      分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

    5.有利于软件工程化管理

      由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。控制器也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

      缺点:

    1.增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

    2.视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

    3.视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

    4.目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

    5.没有明确的定义。完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

    转载于:https://www.cnblogs.com/qq1499632156/p/9099187.html

    展开全文
  • 一、MVC架构模式 二、MVC模式 1、定义 2、MVC在JSP中的实现模型 3、基于Bean的MVC模型 4、基于Bean的MVC模型例 (MVC模型案例) 5、基于Struts的MVC模型 6、Struts的基本结构图 一、MVC架构模式 根据MVC...
  • MVC架构模式(转载)

    2018-03-31 16:22:00
    MVC架构模式 [概念理解] MVC模式和C++的实现 面向对象的设计模式是经验的总结,MVC思想是原先用于构建用户界面的。这篇文章主要论述了如何在新的Web应用领域中使用设计模式和MVC架构。文章首先介绍了设计模式的...
  • MVC架构模式 在编程中MVC应该是无人不知的存在,概念介绍也非常多,M即Model,V即View,C即Controller分别对应我们的业务模型,用户界面和控制器。概念看起来很简单,然而使用起来又不知道哪里对应哪里,那么我们就从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,688
精华内容 4,275
关键字:

mvc架构模式