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

DVK*_*DVK 41 model-view-controller design-patterns

我需要向非技术经理解释MVC(模型 - 视图 - 控制器)概念并遇到麻烦.问题是解释需要在"你的奶奶会得到它"的水平上 - 例如,即使在MVC Wiki页面上提供的相当直接的解释也不起作用,至少在我的评论中.

有没有人用简单的术语来提及一个好的MVC解释?

理想情况下,非技术隐喻的例子(例如类似于"装饰模式就像眼镜")也是如此 - 我失败的一个原因是我能想到的所有MVC例子都与开发相关.

我曾经看过一个模式解释列表但是我记忆中的MVC并没有.

谢谢!

Til*_*tra 95

这个怎么样 - 我的头顶,希望它适合你.

MVC可以与电视隐喻相关.您有各种渠道,有线电视提供商(型号)提供不同的信息.电视屏幕会向您显示这些频道(视图).按下遥控器上的按钮会影响您看到的内容和看到的内容(控制器).

我在看电视,所以我从那里得到了一些灵​​感!

  • 这是一个很好的比喻,但我想补充说,除了用户看到的屏幕外,遥控器也是视图的一部分.该视图指示gui组件并将用户交互输入发送到控制器.控制器解释用户动作,因此在这个比喻中将是电视内部的电子元件.该模型在metephor中是正确的. (2认同)

Jav*_*ier 32

我不相信隐喻.但要解释它并不难:

  • 模型是知道事物的代码的一部分
  • View是代码的一部分,显示了Model知道的东西
  • Controller是代码的一部分,它从用户那里获取命令并告诉View显示什么以及Model知道什么.

  • 我不禁注意到你说你不相信隐喻,而是在整个解释过程中使用它们. (6认同)
  • 这些不是隐喻,只是术语简化.如果你愿意,可以将"知道"扩展为"体现关于"的知识,或者更准确地说"实现处理的机制" (3认同)

Jas*_*son 10

我描述它的最好方法是:

  • 模型是数据源.它是您的数据库存储,它是添加/删除/更新/更改您仓库信息所需的代码.
  • 视图是用户看到并与之交互的部分.HTML页面,应用程序窗口.
  • Controller是将View与模型结合的代码.如果单击"删除"按钮,它将处理业务逻辑和规则(您是要删除的授权人员吗?是可删除记录等).

View不需要了解模型的任何信息.模型不需要了解View的任何信息.Controller是将信息源(Model)与输出(View)结合在一起的.

从视频游戏的角度来看.回来的时候 - 有大量不同的视频卡以及它们是如何工作的.游戏需要各种代码与他们交谈.在玩游戏之前,你必须选择你拥有的那种牌.游戏开发者必须为不同的视频卡创建代码.

随之而来的就像OpenGL或DirectX - 它充当了它们之间的中间层.游戏开发人员可以写入DirectX接口 - 而不是不同的卡的指令集.它使游戏开发人员不必了解特定的视频卡.它使卡制造商能够设计到DirectX指令集.

在这种情况下 - 您玩游戏的是View,DirectX是Controller,而Model是视频卡.