MVC,控制器和型号之间的区别?

时间:2017-01-25 00:04:11

标签: ios model-view-controller

我在youtube上观看了斯坦福大学的一些Swift教学视频。讲师(Paul Hagerty,伟大的老师!)讲述了iOS是如何围绕MVC(模型 - 视图 - 控制器)的思想构建的。我读过一些人在堆栈溢出时说这个想法已经死了,其他人说很多网站开发人员现在都使用这个术语。

我无法区分控制器和型号。我读过MVC描述为用户界面(网页/ UI),控制器(服务器)和模型(数据库)。但是教师将其描述为视图(UI,易于理解),模型(例如进行计算的数据和逻辑)和控制器(将模型和视图与特定的编程逻辑连接起来)。

我不明白的是,如果在独立应用程序(不是网络)的情况下没有数据库,我们也不能同时创建我们的程序如何工作的数据和逻辑?在这种情况下,控制器和型号有什么区别?

2 个答案:

答案 0 :(得分:1)

模型是数据。想象一下表视图控制器。视图是表视图。控制器是UITableViewController。模型可以像字符串数组一样简单。

控制器在模型和视图之间进行调解。它选择要显示的数据并将其安装在视图中。

对于只显示一些文本的非常简单的视图控制器,模型可以像字符串一样简单。如果文本是静态的,则视图控制器甚至可能没有真正的单独模型。它只会显示故事板中的文本。

答案 1 :(得分:1)

存在被过度简化的钉在十字架上的风险:你可以将MVC视为一种分离“问题”的方式 - 用英语 - 每个人都有自己的“责任”(关注点分离)。

因此,在您的“简单示例”中,您可以将概念“分离”为客户端和服务器 - 冒着更加羞耻的风险,browser和某个网站。

  1. controller:浏览器接受用户输入并发出请求;
  2. model:一个回复一些可能只是HTML文档的数据的网站
  3. view:浏览器将该数据呈现给用户
  4. 所以:

    • 浏览器“不知道”数据是如何创建/构建的,只是管理请求/响应并显示结果

    • 所有网站都会构建一些数据并将其(返回)提供给请求者。它不关心如何使用/渲染/显示/过滤等。

    • 所有视图都以某种有意义的方式呈现/显示数据给用户。它不关心数据的来源,也不关心它是如何构建的。

    H个。