菜鸟教程小白 发表于 2022-12-13 10:55:36

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


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

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

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

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

<pre><code>DocumentView documentView = SomeDocumentView(document)
</code></pre>

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

<pre><code>DocumentView documentView = UpdatedDocumentView(document)
</code></pre>

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

<p>但是这样的设计是否违反了 MVC,因为 View 的实现现在显式地依赖于模型?为什么这一定是坏事?如果您的模型在未来发生变化,无论您采用何种方法,您都必须更改代码。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>“ Model View Controller ”在不同的时间有不同的含义。在最初的 MVC 中,在 Smalltalk 中, Controller 表示用户输入,是的, View 采用模型对象并直接表示它们。</p>

<p> <a href="https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html" rel="noreferrer noopener nofollow">Apple&#39;s MVC</a>更像是 <a href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter" rel="noreferrer noopener nofollow">MVP</a> 的别名正如您所说,演示者/ Controller 充当模型和 View 之间的中间人。</p>

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

<p> UIViewController 被称为这样的原因之一是因为它处理许多 View 职责,即用户输入手势。不过,在现代代码中使用这些功能通常是不受欢迎的。 Apple 现在提供了更多的离散机制。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Model-View-Controller 中, View 依赖于模型是否可以?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32597330/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32597330/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Model-View-Controller 中, View 依赖于模型是否可以?