什么是MVC,它的优点是什么?

时间:2020-03-05 18:42:57  来源:igfitidea点击:

我发现什么是mvp和mvc,有什么区别,但是它并没有真正回答这个问题。

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

优点

  • 显示和处理分开

缺点

  • 到目前为止没有

解决方案

回答

MVC是模型,视图和控制器的分离,仅此而已。这仅仅是一个范例。设计课程时,我们应该想到的理想。避免将三种类别的代码混为一类。

例如,尽管表格网格视图显然应该在显示数据后就显示数据,但它不应具有关于从何处检索数据或者其本机结构(模型)是什么样的代码。同样,尽管它可能具有汇总列的功能,但实际的汇总应该在控制器中进行。

"保存文件"对话框(视图)最终将路径(一旦被用户选择)传递到控制器,控制器随后向模型询问数据,并进行实际保存。

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

回答

Jeff对此发表了一篇文章,否则,我在Apple网站上的Cocoa教程中找到了一些有用的文档(例如,该文档)。

回答

关注点分离是一个难题。

能够将这些组件分开,使得代码更易于重用和独立测试。如果我们实际上并不了解MVC是什么,请谨慎尝试理解人们的意见,因为关于"模型"是什么(无论是业务对象/数据集/数据表还是代表基础服务)仍有一些争议。层)。

我已经看到了各种各样的称为MVC的实现,但并不完全一样,正如Jeff文章中的注释所显示的那样,MVC是一个有争议的观点,我认为开发人员永远不会完全同意。

这里提供了所有不同MVC类型的详细介绍。

回答

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

没有设计"组件"的这种根本隔离,采用这些技术将变得更加困难。

我认为这有助于使代码更加基于接口。不仅在单个项目中,而且我们几乎可以开始开发通用的"视图",这意味着我们可以模板化应用程序中使用的更多"讨厌"代码。例如,一个非常抽象的"数据视图",该视图仅获取一堆数据并将其放入通用的网格布局中。

编辑:

如果我没记错的话,这是关于MV *模式的不错的播客(前一阵子听过!)

回答

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

否则,对于大多数其他驱动程序而不是图形驱动程序的数据驱动的应用程序,这似乎是驱动UI的逻辑方法。

回答

如果我们遵循stackoverflow播客,我们会听到Jeff(和Geoff?)讨论其出色之处。 http://blog.stackoverflow.com/2008/08/podcast-17/。但是请记住,使用这些单独的层意味着将来会更轻松-现在更难。分层会使事情变慢。而且我们可能不需要它们。但是,不要让它阻止我们学习它的含义-在构建大型,健壮且寿命长的系统时,它是无价的。

回答

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

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

可以轻松实现视图的增强以及对用于构建视图的新技术的其他支持。

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