gpt4 book ai didi

Swift MVVM 模式·层分离

转载 作者:行者123 更新时间:2023-11-30 11:43:20 26 4
gpt4 key购买 nike

(这个问题同样适用于 MVC 和其他模式,但我目前正在开发基于 MVVM 的应用程序。)

在MVVM模式中; View 直接作用于 ViewModel,而 ViewModel 又直接作用于 Model,Model 通知 View 绑定(bind)到的 ViewModel。因此,更改请求从 View 传播到模型,并作为 View 的更新返回。

您为什么不执行以下操作?查看发出变更请求通知。 ViewModel 接收通知并发出自​​己的更改请求通知。模型接收通知、更改并发出更改通知。 ViewModel 接收此消息并发出自己的更改通知。 View 接收此消息并更新。

这听起来更复杂(每个更改四个通知),但实现了 100% 的层分离,并允许任意数量的模型连接到 View (反之亦然)。

注意:如果您用 RxSwift 或其他机制代替通知,同样的问题也适用。

最佳答案

你说的完全正确。 (而且一点也不复杂)。

针对模型更改采取行动,基本上是在讨论模型对不同模块的依赖关系。 (例如从设备获取联系人,或服务器收到的推送或......)。这就是此行为试图描述的内容,另一方面,您所说的是描述用户触发操作(例如重新加载、按钮点击或...)的行为。

另一方面,这取决于您如何实现 ViewModel。由于没有实现 ViewModel 的经验法则,因此每个团队或个人的实现方式都不同。有些在 ViewModel 中实现整个逻辑,而 Model 是尽可能愚蠢的。有些实现 ViewModel 尽可能愚蠢,仅将 View 连接到模型,反之亦然。

我自己通常将 ViewModel 实现为逻辑,将模型实现为尽可能愚蠢的,并将我的分离应用于组合。 (一个 ViewModel 可能连接到不同的 ViewModel 等)。

我可以轻松地将我的 ViewModel 连接到 CI,并且我的项目仍然可以工作。 (因此我可以为所有这些编写单元测试、UI 测试、集成测试)

关于Swift MVVM 模式·层分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com