Tim*_*imo 0 architecture model-view-controller mvvm swift
我很难理解 MVVM,因为我正在学习使用 Swift for iOS 进行 SwiftUI 开发。在阅读了各种教程和观看YouTube 视频后,这是我的理解:
然而,在做了额外的研究之后,我发现这篇文章讨论了控制器在 MVVM 中的作用。现在,这让我很困惑,因为我的理解是 MVVM 中的 ViewModel 已经负责控制器的操作,例如在 MVC 中,因此控制器不会存在于基于 MVVM 的应用程序中。
问题:基于 MVVM 的应用程序中是否存在控制器,或者文章根本就是错误的?
这只是一个术语问题。作者\xe2\x80\x99 对术语的选择有点不寻常,我不会对此感到困扰。当您深入研究这些架构模式时,您\xe2\x80\x99将看到术语的各种不同用法。(通常,术语 \xe2\x80\x9cview model\xe2\x80\x9d 需要进行一些创造性的解释。)
\n关于作者 \xe2\x80\x99s 对术语 \xe2\x80\x9ccontroller\xe2\x80\x9d 的特殊使用,在文档前面,当谈论视图控制器时,他开始将它们简单地称为 \xe2\x80\ x9ccontrollers\xe2\x80\x9d。这是不精确的,但这是他在整篇文章中采用的术语。
\n(顺便说一句,我会避免将视图控制器称为 \xe2\x80\x9ccontrollers\xe2\x80\x9d,因为对于我们许多人来说,术语 \xe2\x80\x9ccontroller\xe2\x80\x9d 指的是某些东西更加抽象,与 UI 无关。例如,请参阅 Dave Delong\xe2\x80\x99s 优秀视频 A Better MVC 中对 \xe2\x80\x9ccontrollers\xe2\x80\x9d 的讨论。但是让\xe2\x80\ x99s 将所有这些放在一边,讨论视图控制器在 MVVM 中的作用。)
\n如果您在 UIKit 或 AppKit 中使用 MVVM,那么您就有一个模型、一个视图和一个视图模型。但你仍然还有视图控制器。那么他们会怎样呢?它们不会消失(除非你切换到 SwiftUI 之类的东西)。
\n我们中的大多数人只是将视图控制器视为更广泛的 \xe2\x80\x9cview\xe2\x80\x9d 层的一部分。视图控制器是一个 UIKit 对象。它配置视图。它不是某种抽象对象,而是 UI 的组成部分。在 MVVM 中,它通常负责将视图连接到视图模型等。无论您采用哪种架构模式,良好的视图控制器实现的特点是它几乎完全局限于 UI 相关任务。
\n因此,简而言之,在您引用的那篇文章中,作者只是说视图控制器仍然存在(至少对于非 SwiftUI 项目而言)。他决定将其描述为 MVVM 图中的一个单独层。我们中的许多人只认为视图控制器只是 \xe2\x80\x9cview\xe2\x80\x9d 层的一部分。这是一个术语问题。
\n 归档时间: |
|
查看次数: |
321 次 |
最近记录: |