• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 Model-View-Controller 中, View 依赖于模型是否可以?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:55:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

关于模型- View - Controller (MVC) 的文献通常指出模型和 View 是相互独立的实体,而 Controller 调节它们的交互,因此强烈依赖于两者。

在理论上,最后一条语句似乎是一种加强模块化的合理方法。

但是假设您编写了一个允许用户创建、编辑和保存文档的应用程序。这些文档比简单的文本文档更复杂,由多个字段组成,并非所有字段都属于同一类型。然后你会想到,为了多态地支持同一个文档的多个可视化表示,你可以定义一个 DocumentView 接口(interface),任何具体的 View 子类都可以采用它来指示它能够显示一个文档。

现在,假设您已经编写了采用 DocumentView 接口(interface)的 SomeDocumentView 类。要创建文档 View ,您的应用程序代码将具有类似于以下的一行:

DocumentView documentView = SomeDocumentView(document)

现在假设将来你已经编写了UpdatedDocumentView 类,它也采用了DocumentView 接口(interface)。要进行更改,您只需将上面的行替换为:

DocumentView documentView = UpdatedDocumentView(document)

瞧!您的应用程序代码通过 DocumentView 接口(interface)自动支持您的 UpdatedDocumentView。

但是这样的设计是否违反了 MVC,因为 View 的实现现在显式地依赖于模型?为什么这一定是坏事?如果您的模型在未来发生变化,无论您采用何种方法,您都必须更改代码。



Best Answer-推荐答案


“ Model View Controller ”在不同的时间有不同的含义。在最初的 MVC 中,在 Smalltalk 中, Controller 表示用户输入,是的, View 采用模型对象并直接表示它们。

Apple's MVC更像是 MVP 的别名正如您所说,演示者/ Controller 充当模型和 View 之间的中间人。

这种模式允许独立开发 View 。可能在您的 DocuentView 的情况下,它实际上是几个其他 View 的组合和 Controller ,从而模糊了 View 和 Controller 之间的区别。

UIViewController 被称为这样的原因之一是因为它处理许多 View 职责,即用户输入手势。不过,在现代代码中使用这些功能通常是不受欢迎的。 Apple 现在提供了更多的离散机制。

关于ios - 在 Model-View-Controller 中, View 依赖于模型是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32597330/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap