在 MVVM with Clean Architecture 中,项目中很多地方都会用到的变量最好放在哪里?

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

例如,我有一个从设备获取最后位置的 LocationRepository。但是我需要在许多 ViewModels 中使用最后的位置信息。

定义一个私有变量来保存 LocationRepository 中的最后一个位置和一个公共的 getter 方法来访问它是否更好?之后,我可以将该存储库注入我需要的每个 ViewModel。

或者我应该在静态字段中定义一个全局可访问的 lastLocation 变量吗?

就我的 Android 项目的可测试性和单一职责而言,哪种方法更好。

android mvvm clean-architecture single-responsibility-principle solid
2个回答
0
投票

将在项目中的许多地方使用的变量的最佳放置位置取决于它们的范围。应用程序范围的变量应该放在更高级别的层,例如领域层,而特定于视图或视图模型的变量应该放在相应的组件中。例如,用户的身份验证令牌可以放在域层中,而指示视图是否处于编辑模式的布尔变量可以放在相应的视图模型中。


0
投票

根据我的理解,制作一个位置存储库,其中带有 setter 和 getter 的变量会更有意义,因为您可以随时更改从单一来源获取最后位置的逻辑,这样这将更易于维护而且为了测试,您可以简单地注入一个假的位置存储库,它是可测试的。

另外,你应该考虑最后一个位置的使用,比如在这种情况下你是否经常更改它,如果你想在多个片段中同时刷新它,那么你需要相应地思考。

我不知道确切的用例,所以以上只是我的意见,如果您有任何疑问,请告诉我。

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