为什么此示例应用程序中的存储库类为单例?

时间:2018-08-15 07:29:53

标签: android android-architecture-components android-jetpack

在此示例应用程序中: https://github.com/googlesamples/android-sunflower

存储库类(PlantRepository.kt,GardenPlantingRepository.kt)是单例,注入器实用程序对象(InjectorUtils.kt)也是单例。

当注射器实用程序对象已经是一个对象时,为什么存储库类是单例的?

1 个答案:

答案 0 :(得分:1)

InjectorUtils是一个单例,因为他们希望在代码中的任何位置以静态方式将其用作帮助器类,并希望通过它可以获取PlantRepository,GardenPlantingRepository和一些工厂。现在,如果考虑存储库,它们是提供对内存数据集的快速访问的类(可以随后对其进行异步更新),因此没有任何理由随时创建存储库的新实例(这意味着任何时候都会分配新内存),因为它的方法只是dao方法的包装;实际上,如果您注意到了,则将dao传递到getInstance()中的此类单例存储库,因此允许包装方法与dao之间进行绑定。因此,它们是单例以避免分配新的内存,而是绕过同一分配的内存(因为它仅包含包装器)