• 对MVC的理解


    MVC并不属于GOF的23个设计模式之列,但是它在GOF的书中作为一个重要的例子被提出来,并给予了很高的评价。一般的来讲,我们认为GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更为一般的底层的模式,在其上也可以通过组合得到一些高级的模式。MVC就可以看作是进行一些模式组合之后的结果。

      MVC定义:Model-View-Controller,把一个应用的输入、处理、输出流程按照ModelViewController的方式进行分离,这样一个应用被分成三个层,即模型层、视图层、控制层。

      MVC模式结构如下:

     

    模型(Model):封装的是数据源和所有基于对这些数据的操作。在一个组件中,Model往往表示组件的状态和操作状态的方法。
    视图(View):封装的是对数据源Model的一种显示。一个模型可以由多个视图,而一个视图理论上也可以同不同的模型关联起来。
    控制器(Control):封装的是外界作用于模型的操作。通常,这些操作会转发到模型上,并调用模型中相应的一个或者多个方法。一般Controller在Model和View之间起到了沟通的作用,处理用户在View上的输入,并转发给Model。这样Model和View两者之间可以做到松散耦合,甚至可以彼此不知道对方,而由Controller连接起这两个部分。
      MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Model的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。

    MVC的两个分离:
      Ⅰ:View和Model分离:Model关注内在的不可视的逻辑,而View关注外在的可视的逻辑。这样能够为相同的Moudle开发不同的View进行展示,把可视与不可视分离开也可以使Modle相对独立,耦合性降低,可以进行独立测试。
      Ⅱ:View和Controller分离:这个分离的重要性不是很大,因为View和Controller往往是一一对应的关系。Controller对View是单向引用,这样可以对Controller进行独立测试。

       MVC的优点:

      最重要的是有多个视图对应一个模型的能力,使的软件的健壮性和代码的重用性得到了很大的提高;一个应用被分离为三个层,有新的需求只需改变特定的层就可以满足,也便于维护,有利于软件工程化管理。

      缺点:
         

    (1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,使软件的开发周期加长,并可能产生过多的更新操作,降低运行效率。
      (2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
      (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
      (4) 目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

    适用范围:

    将MVC运用到你的应用程序,会带来额外的工作量,增加应用的复杂性,但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。

  • 相关阅读:
    php 通过header下载中文文件名 压缩包损坏或文件不存在的问题
    MySQL查看数据库安装路径
    PHP 中move_uploaded_file 上传中文文件名失败
    C# Windows异步I/O操作
    .Net 环境下比较各种数据库插入操作的性能
    GenericFactoryMethod泛型工厂模式实现简单IOC功能
    State状态模式
    .Net RabbitMQ之消息通信 构建RPC服务器
    .Net RabbitMQ系列之环境搭建于RabbitMQ基本介绍
    C# 算法之选择排序
  • 原文地址:https://www.cnblogs.com/lipengpengpeng/p/6752642.html
Copyright © 2020-2023  润新知