Swift MVVM模式·图层分离

问题描述 投票:0回答:1

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

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

你为什么不做以下事?查看发出更改请求通知。 ViewModel接收通知并发出自​​己的更改请求通知。模型接收通知,更改并发出更改的通知。 ViewModel收到此消息并发出自己更改的通知。 View收到此信息并进行更新。

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

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

swift mvvm notificationcenter
1个回答
0
投票

你所说的完全正确。 (而且它并不复杂)。

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

另一方面,它取决于您如何实现ViewModel。由于实施ViewModel没有任何经验法则,因此每个团队或个人以不同方式实施它。有些实现了ViewModel中的整个Logic,而Model尽可能愚蠢。有些实现ViewModel尽可能愚蠢,只将View连接到Model,反之亦然。

我自己,通常将ViewModel实现为逻辑,尽可能将Model设置为哑,并将我的分色应用于合成。 (一个ViewModel可能连接到不同的ViewModel和...)。

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

© www.soinside.com 2019 - 2024. All rights reserved.