MVC(模型 – 视图 – 控制器) – 可以用简单的术语来解释吗?

我需要向一个不是非常技术的经理解释MVC(模型 – 视图 – 控制器)的概念,并且遇到了麻烦。 问题是,解释需要在“你的奶奶会得到它”的层面 – 例如,甚至在MVC维基页面上提供的相当直接的解释都不起作用,至less在我的评论中。

有没有人有一个简单的说法很好的MVC的解释?

理想情况下,用非技术隐喻的例子来完成(例如类似于“装饰者模式就像眼镜”) – 我失败的一个原因是所有我能想到的MVC例子都是与开发有关的。

我曾经看到过一个模式解释列表,但是为了记忆,MVC并不在其上。

谢谢!

怎么样 – closures我的头顶,希望它适合你。

MVC可以隐喻地与电视相关。 你有不同的渠道,由你的有线电视提供商提供不同的信息(模型)。 电视屏幕显示这些频道给你(视图)。 您按下遥控器上的button会影响您所看到的以及您如何看到它(控制器)。

我正在看电视,所以我从那里得到了一些启发!

我不相信隐喻。 但是这不难解释:

  • 模型是知道事物的代码的一部分
  • 视图是显示模型知道的东西的代码的一部分
  • 控制器是从用户获取命令的代码的一部分,并告诉视图显示什么和模型知道什么。

我描述的最好的方法是:

  • 该模型是数据源。 这是您的数据库存储,这是添加/删除/更新/更改仓库信息所需的代码。
  • 视图是用户看到并与之交互的部分。 一个HTML页面,一个应用程序窗口。
  • Controller是将View与Model结合在一起的代码。 如果你点击一个“删除”button,它将处理业务逻辑和规则(你是授权人员删除吗?它是一个可删除的logging等)。

该视图不需要知道任何有关该模型。 该模型不需要知道任何关于视图。 Controller是将信息源(Model)与输出(View)结合在一起的东西。

从video游戏angular度考虑它。 回来的时候 – 有大量不同的video卡,以及他们如何工作。 游戏需要各种代码与他们交谈。 在玩游戏之前,你必须select你有什么样的牌。 游戏开发者必须为不同的video卡创build代码。

随之而来的就是OpenGL或DirectX,它们之间的中间层。 游戏开发者可以写入DirectX接口 – 而不是不同的卡片指令集。 它使游戏开发者不必知道具体的显卡。 它使卡制造商能够devise出DirectX指令集。

在这种情况下,玩游戏的是View ,DirectX是控制器Model是video卡。

MVC将其视为:“订单详细信息(包括客户和员工信息)”,“HTML / ASP表单(显示OrderDetails)”和“订单明细服务类别(具有SaveOrderDetails,GetOrderDetails等方法)。

模型(数据类例如OrderDetails)

The data you want to Display 

控制器(服务类)

 Knows about the Model (Order Details) Has methods to manage the Model And as such can be unit tested Its Single Responsibility is to manage the OrderDetails CRUD operations. It knows NOTHING about the View 

视图(ASP页面)

 Displays the Model (OrderDetail's ViewData). It has to know about the Model's structure so it can correctly display the data to the users on screen. The View's structure (style, layout, HTML etc., locale) can be changed at anytime without it changing anything in the application's functionality. And as such, many Views can display the same Model in many different ways. In multi-tenant web applications, Customer specific Views can be stored in a database table and displayed based on Customer information 

告诉“你的奶奶”你是模特(你在做这项工作),他是pipe理者(即中层pipe理者),而且这个观点就像营销一样,他们得到了所有的荣誉。

Interesting Posts