Android SharedViewModels 与 Clean Architecture 代码库

Android SharedViewModels vs Clean Architecture repositories

提问人:htafoya 提问时间:10/21/2023 最后编辑:htafoya 更新时间:10/21/2023 访问量:19

问:

假设我有一个屏幕 A、B、C、D 流,用户沿着屏幕构建一些数据以在 D 上对它们执行最终操作,但能够返回以前的屏幕来编辑一些数据。除了在此屏幕流中之外,不需要缓存或保留数据。

由于所有屏幕都是片段,一种方法是让托管活动使用共享的 ViewModel,其中所有片段都能够链接相同的 viewmodel 实例,从而编辑相同的数据对象,同时仍然在其自己的片段视图模型上维护特定的表示逻辑。这样,每个 Fragment 的视图模型都将具有对活动共享视图模型的引用。

                |    AViewModel    | AFragment
SharedViewmodel |    BViewModel    | BFragment
                |    CViewModel    | CFragment
                |    DViewModel    | DFragment

但是,该项目使用带有用例和存储库的清洁架构来访问数据库数据以及远程数据和操作。

在这种情况下,数据难道不应该是存储库的内存数据源,并完全忽略 sharedviewmodel 策略,以便每个片段视图模型都从用例和存储库中获取和保存信息吗?

                   |           |          | AViewModel | AFragment
inMemoryDataSource | Repostory | UseCases | BViewModel | BFragment
                   |           |          | CViewModel | CFragment
                   |           |          | DViewModel | DFragment

如果是这样,通过使用 Clean Architecture,避免在片段之间使用共享视图模型是否正确?即,是否存在 sharedViewModel 有用的情况?

android-fragments 存储库模式 android-viewmodel clean-architecture

评论


答: 暂无答案