Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 什么是MVC?它的优点是什么?_Model View Controller_Design Patterns - Fatal编程技术网

Model view controller 什么是MVC?它的优点是什么?

Model view controller 什么是MVC?它的优点是什么?,model-view-controller,design-patterns,Model View Controller,Design Patterns,我发现了,但它并没有真正回答这个问题 我最近开始使用MVC,因为它是我和我的工作伙伴将要使用的框架的一部分。我们之所以选择它,是因为它看起来很简单,而且过程与显示分离,除此之外,还有其他优势我们不知道,可能会错过吗 专业人士 显示和处理是分开的 缺点 到目前为止还没有 MVC是模型、视图和控制器的分离——不多也不少。这只是一个范例;这是一个在设计课程时应该牢记的理想。避免将三个类别中的代码混合到一个类中 例如,虽然表网格视图在显示后显然应该显示数据,但它不应该有关于从何处检索数据或其本机结构(

我发现了,但它并没有真正回答这个问题

我最近开始使用MVC,因为它是我和我的工作伙伴将要使用的框架的一部分。我们之所以选择它,是因为它看起来很简单,而且过程与显示分离,除此之外,还有其他优势我们不知道,可能会错过吗

专业人士

  • 显示和处理是分开的

  • 缺点

  • 到目前为止还没有
  • MVC是模型、视图和控制器的分离——不多也不少。这只是一个范例;这是一个在设计课程时应该牢记的理想。避免将三个类别中的代码混合到一个类中

    例如,虽然表网格视图在显示后显然应该显示数据,但它不应该有关于从何处检索数据或其本机结构(模型)是什么样的代码。类似地,虽然它可能有一个对列求和的函数,但实际的求和应该发生在控制器中

    “保存文件”对话框(视图)最终将用户选择的路径传递给控制器,然后控制器向模型请求数据,并进行实际保存


    这种责任分离允许在未来的道路上保持灵活性。例如,由于视图不关心底层模型,因此支持多种文件格式更容易:只需为每种格式添加一个模型子类。

    Jeff对此有自己的看法,否则我会在苹果网站上的Cocoa教程(例如)中找到一些有用的文档。

    关注点分离是个大问题

    能够区分这些组件使代码更易于重用和独立测试。如果您实际上不知道什么是MVC,请小心尝试理解人们的观点,因为关于“模型”是什么(是业务对象/数据集/数据表还是表示底层服务层)仍然存在一些争议

    我见过各种称自己为MVC的实现,但并不完全是MVC,正如《show MVC》中的评论所示,MVC是一个有争议的观点,我认为开发人员永远不会完全同意


    所有不同的MVC类型都有一个很好的总结。

    我认为使用MVC模式的另一个好处是它为其他设计方法打开了大门,例如MVP/Presenter first和许多其他MV*模式

    如果没有这种设计“组件”的基本分离,采用这些技术将更加困难

    我认为这有助于使您的代码更加基于接口。。不仅在单个项目中,而且您几乎可以开始开发常见的“视图”,这意味着您可以为应用程序中使用的更多“grunt”代码模板。例如,一个非常抽象的“数据视图”,它简单地获取一组数据并将其扔到公共网格布局中

    编辑:
    如果我没记错的话,(刚才听过!)

    我能想到的一个缺点是,如果您需要快速访问视图中的数据(例如,游戏动画数据,如骨骼位置)。在这种情况下,保持一层分离是非常低效的


    否则,对于大多数其他数据驱动多于图形驱动的应用程序来说,驱动UI似乎是一种合乎逻辑的方式。

    如果您关注stackoverflow播客,您可以听到Jeff(和Geoff?)讨论它的伟大之处。但请记住,使用这些单独的层意味着将来事情会变得更容易,现在就更难了。分层可以让事情变得更慢。你可能不需要它们。但不要因此而停止学习它是什么——在构建大型、健壮、长寿命的系统时,它是非常宝贵的。

    它将由控制器控制的模型和视图分离开来, 就模型而言,您的模型必须遵循OO体系结构,未来对代码库的增强和其他维护应该非常容易,并且代码库应该是可重用的

    同一模型可以有任意数量的视图,例如,相同的信息可以显示为不同的图形视图。 同一视图可以有不同的型号,例如不同的详细信息可以显示为单个图形,例如条形图。 这就是视图和模型的可重用性

    视图中的增强和对构建视图的新技术的其他支持可以很容易地实现


    从事视图工作的人不需要了解底层模型代码库及其体系结构,反之亦然。

    MVC体系结构的主要优势在于区分模型、视图和控制器中的项目层,以实现代码的可重用性,易于维护代码和维护。最好的情况是,开发人员在项目维护之间添加一些代码感觉很好

    在这里,您可以看到更多的要点。

    ![mvc架构][1]


    模型-视图-控制器(MVC)是一种用于实现用户界面的软件体系结构模式。它将给定的软件应用程序分为三个相互关联的部分,以便将信息的内部表示与向用户呈现或接受信息的方式分开。

    MVC只是一种通用设计模式,在精益web应用程序开发的背景下,使开发人员能够轻松地将应用程序表示层(视图)中的HTML标记与接收和处理客户端请求的方法(控制器)以及视图中返回的数据表示(模型)分开。这都是关于关注点的分离,也就是说,将服务于一个功能目的(例如处理客户端请求)的代码与服务于完全不同功能目的(例如表示数据)的代码隔离开来

    这是同样的原则,为什么任何花了5分钟以上试图建立一个网站的人都会意识到需要保留HTML标记、JavaScript和C