Model view controller MVC架构的正确实现

Model view controller MVC架构的正确实现,model-view-controller,Model View Controller,我读了很多关于MVC体系结构的文章,但我仍然感到困惑 哪个图表正确? 是否存在MVC架构的正确实现? 我可以使用不同的MVC架构实现吗? 图1 图2 图3 我学习好的MVC技术的策略是找一个知道的人,问很多问题。问我们这些不知道你的要求、意图或想法的人,没有什么好处 我认为图1被认为是“最佳”图,但在不了解您的独特情况的情况下,最好向了解您的需求和MVC体系结构的其他人解释您的需求。MVC可以通过思考责任来理解: 不允许视图直接更改模型的状态-仅通过控制器。视图仍然可以直接访问模型

我读了很多关于MVC体系结构的文章,但我仍然感到困惑

  • 哪个图表正确?
  • 是否存在MVC架构的正确实现?
  • 我可以使用不同的MVC架构实现吗?
图1

图2

图3


我学习好的MVC技术的策略是找一个知道的人,问很多问题。问我们这些不知道你的要求、意图或想法的人,没有什么好处


我认为图1被认为是“最佳”图,但在不了解您的独特情况的情况下,最好向了解您的需求和MVC体系结构的其他人解释您的需求。

MVC可以通过思考责任来理解:

不允许视图直接更改模型的状态-仅通过控制器。视图仍然可以直接访问模型,尽管仅用于查看(或通过拥有非官方模型的副本)

模型应该存在于它自己的宇宙中,并且没有对控制器或视图的任何引用


控制器控制状态和对模型的访问。

绝对不是图3!图1还可以。我认为最好的基本上是图2,从控制器到视图有一个箭头

假设您在web应用程序的上下文中提问,我认为一个好的MVC流应该是这样的:

  • 当web请求出现时,它是两种类型之一

    类型A-这是一个直接映射到视图的简单请求,因此不涉及控制器

    类型B-这是映射到控制器的请求

  • 对于类型A和B,视图始终直接从模型读取数据

  • 如果是类型B请求,控制器读取/更新模型,完成后要求MVC框架向客户端返回视图。该视图读取更新模型并呈现给客户端

  • 这是本报告所支持的方法


    希望这有帮助。

    箭头代表什么?也许箭头意味着依赖性/可见性?谢谢,这真的帮助了我。在现实中,模型必须始终有控制器的引用,不管是通过某种网络协议还是直接通过C++/JAVA指针/引用。否则它将无法访问。。。顺便说一句:今天的大多数MVC实现(Android、Windows WPF、Qt)都不是纯MVC。我相信这主要是因为性能原因。我们只能在间接访问模型数据(通常通过XML消息)的情况下谈论纯MVC。@vitakot:我不明白为什么您认为模型需要了解其他组件的任何信息-您可以访问模型,而无需参考您。。