一个应该为每个片段使用多个视图模型的做法是否不好?

11

我有一个项目,其中包含1个主要活动和4个片段,它们都继承自同一个“BaseFragment”。

最初,我使用同一个ViewModel来管理整个项目,包括主要活动和片段,但是随着时间的推移,里面的代码变得过于庞大,因此决定根据每个片段/活动的需要将其拆分为多个ViewModel。

我创建了一个“MainViewModel”,并在主要活动和其他ViewModel中使用它。

我的问题是:是否将代码分散到多个ViewModel中是减少ViewModel中代码的良好实践?可能拥有多个ViewModel会导致效率低下吗?还有哪些方法可以简化这个过程?

1个回答

14

关注点分离几乎从来不是坏事。理想情况下,每个文件/类都应该负责一件事情。

此外,您永远不知道代码会如何增长。随着时间的推移,事物往往变得更加复杂,通常不会变得更简单。因此,虽然现在有多个viewModels可能感觉过度设计,但以后可能会收到回报。

一个共享视图模型适用于多个片段的理想情况是当片段需要彼此通信时 - 它们都将使用活动视图模型。

我认为在这种情况下,您可以同时使用两种方法,但我从未这样做过,所以无法确定。


1
顺便提一下,在这里继承方面要小心。那些继承的行为真的属于超类吗,还是应该放在接口中呢? - Bassinator
是的,我知道在片段之间共享ViewModel是一种很好的通信方式,我以前用过,但在这种情况下,我使用Bundle和args创建片段时传递信息来避免拥有一个大的ViewModel并拥有多个小的ViewModel,正如您所说,分离关注点。 - Diego SM
共享ViewModel在Fragment之间的参考:https://developer.android.com/topic/libraries/architecture/viewmodel#sharing - Aba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接