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

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

优点

  1. 显示和处理分离


缺点

  1. 到目前为止还没有
有帮助吗?

解决方案

MVC 是分离的 奥德尔, v看看和 C控制器——仅此而已。这只是一个范例;在设计课程时,您应该牢记这一理想。避免将三个类别的代码混合到一个类中。

例如,当表格网格 看法 显然,一旦显示就应该呈现数据,它不应该有关于从哪里检索数据或其本机结构( 模型) 就好像。同样,虽然它可能有一个对列求和的函数,但实际求和应该发生在 控制器.

“保存文件”对话框(看法)最终将路径(一旦用户选择)传递到 控制器, ,然后询问 模型 数据,并进行实际保存。

这种职责分离可以实现未来的灵活性。例如,因为视图不关心底层模型,所以支持多种文件格式更容易:只需为每个添加一个模型子类即可。

其他提示

关注点分离是最重要的。

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

我见过各种自称为 MVC 的实现,但并不完全像中的评论那样 杰夫的文章 显示 MVC 是一个有争议的观点,我认为开发人员永远不会完全同意。

提供了所有不同 MVC 类型的全面汇总 这里.

杰夫有一个 邮政 关于它,否则我在Apple的网站上找到了一些有用的文档,在Cocoa教程中(这个 例如)。

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

如果没有设计“组件”的这种基本隔离,采用这些技术将会困难得多。

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

编辑:

如果我没记错的话 这是一个关于 MV* 模式的非常好的播客 (不久前听过!)

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

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

如果您关注 stackoverflow 播客,您可以听到 Jeff(和 Geoff?)讨论其伟大之处。 http://blog.stackoverflow.com/2008/08/podcast-17/. 。但请记住,使用这些单独的层意味着未来的事情会更容易,但现在会更困难。和层 让事情变慢。而且你可能不需要它们。但不要让这阻止您了解它是什么——在构建大型、健壮、长寿命的系统时,它是无价的。

就模型而言,它将模型和视图分开,而您的模型必须遵循OO体系结构,未来增强功能和代码库的其他维护应该非常容易,并且应该重复使用代码库。

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

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

处理视图的人不需要了解底层模型代码库及其架构,反之亦然。

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

这也是为什么任何花费超过 5 分钟尝试构建网站的人都会意识到将 HTML 标记、JavaScript 和 CSS 保存在单独文件中的必要性的原因:如果您只是将所有代码转储到一个文件中,那么您最终会得到意大利面条,以后几乎无法编辑。

既然您询问了可能的“缺点”: 我不是软件架构设计方面的权威,但根据我在 MVC 中开发的经验,我认为指出遵循严格、简洁的 MVC 设计模式对于 1) 轻量级 Web 应用程序最有用,或者 2 )作为大型企业应用程序的 UI 层。我很惊讶这个规范没有被更多地讨论,因为 MVC 没有包含对业务逻辑、域模型或应用程序数据访问层中任何内容的明确定义。当我开始使用 ASP.NET MVC 进行开发时(即在我知道其他软件架构存在之前),我最终会得到非常臃肿的控制器,甚至视图模型充满了业务逻辑,如果我一直在开发企业应用程序,那么对于其他不熟悉我的应用程序的开发人员来说,这会变得困难要修改的代码(即更多意大利面)。

MVC 的主要优点之一(此处未提及)是 MVC 提供 RESTful url,从而支持 SEO。当您明智地命名控制器和操作时,如果搜索引擎只查看您的网站 URL,则可以更轻松地找到您的网站。例如,您有一个汽车销售网站和一个显示可用兰博基尼 Veneno 汽车的页面,而不是 www.MyCarSale.com/product/6548 参考您可以选择的页面 www.MyCarSale.com/SportCar/兰博基尼-维内诺 用于 SEO 目的的 url。

这里 是 MVC 优点的一个很好的答案 这里 是一篇文章如何创建 SEO 友好的 URL。

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

在这里您可以看到更多要点 MVC架构的主要优点.

![mvc架构][1]

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top