在MVVM与干净的架构,在哪里是最好的地方,把将在项目的许多地方使用的变量?



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

定义一个私有变量来保存LocationRepository中的最后一个位置和一个公共getter方法来到达它是否更好?在那之后,我可以把那个Repository注入到我需要的每个ViewModel中。

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

在一个Android项目中,哪一个在可测试性和单一责任方面会是一个更好的方法?

根据我的理解,创建一个位置存储库,其中包含setter和getter变量将更有意义,因为您可以随时更改从单个源获取最后位置的逻辑,因此这将更易于维护。对于测试,您也可以简单地注入一个假位置存储库,它将是可测试的。

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

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

最新更新