我需要向非技术经理解释MVC(模型 - 视图 - 控制器)概念并遇到麻烦。问题是,解释需要在“你的奶奶会得到它”的水平 - 例如甚至在MVC Wiki page上提供的相当直接的解释也没有用,至少在我的评论中是这样。
有没有人用简单的术语来提及一个好的MVC解释?
理想情况下,非技术隐喻的例子(例如类似于“装饰者模式就像眼镜”)也是如此 - 我失败的一个原因是我能想到的所有MVC例子都与开发相关。
我曾经看过一个模式解释列表,但据我记忆,MVC并没有在它上面。
谢谢!
答案 0 :(得分:94)
这个怎么样 - 我的头顶,希望它适合你。
MVC可以与电视隐喻相关。您有各种渠道,有线电视提供商(型号)提供不同的信息。电视屏幕会向您显示这些频道(视图)。按下遥控器上的按钮会影响您看到的内容和看到的内容(控制器)。我在看电视,所以我从那里得到了一些灵感!
答案 1 :(得分:32)
我不相信隐喻。但要解释它并不难:
答案 2 :(得分:9)
我描述的最佳方式是:
View不需要了解有关模型的任何信息。模型不需要了解View的任何信息。 Controller是将信息源(Model)与输出(View)结合在一起的。
从视频游戏的角度来考虑它。回来的时候 - 有大量不同的视频卡以及它们是如何工作的。游戏需要各种代码与他们交谈。在玩游戏之前,你必须选择你拥有的那种牌。游戏开发者必须为不同的视频卡创建代码。
类似于OpenGL或DirectX - 它充当了它们之间的中间层。游戏开发人员可以写入DirectX接口 - 而不是不同的卡的指令集。它使游戏开发人员不必了解特定的视频卡。它使卡制造商能够设计到DirectX指令集。
在这种情况下 - 您玩游戏的是查看,DirectX是控制器,模型是视频卡。< / p>
答案 3 :(得分:3)
MVC将其视为:“订单详细信息(包括客户和员工信息)”,“HTML / ASP表单(显示OrderDetails)”和“订单详细信息服务类(具有SaveOrderDetails方法,GetOrderDetails等)
模型(数据类,例如OrderDetails)
The data you want to Display
Controller(服务类)
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
答案 4 :(得分:2)
告诉“你的奶奶”你是模特(你正在做的工作),他是控制人(即中层经理),而观点就像营销,他们得到了所有的信用。