ozn*_*cro 5 android android-architecture-components android-jetpack
在此示例应用程序中:https : //github.com/googlesamples/android-sunflower
存储库类(PlantRepository.kt、GardenPlantingRepository.kt)是单例的,注入器实用程序对象(InjectorUtils.kt)也是如此。
当注入器实用程序对象已经是一个时,为什么存储库类是单例的?
InjectorUtils是一个单例,因为他们想以静态的方式从代码中的任何地方使用它作为辅助类,并且通过它能够获取一个PlantRepository、一个GardenPlantingRepository和一些工厂。现在,如果您考虑存储库,它们是提供对内存中数据集的快速访问的类(然后可以异步更新),因此没有任何理由随时创建存储库的新实例(这意味着任何时候都会分配新的内存),因为它的方法只是 dao 方法的包装器;事实上,如果您注意到,dao 会在 getInstance() 中传递到此类单例存储库,因此允许包装器方法和 dao 之间的绑定。因此,它们是单例以避免分配新内存,而是传递相同的已分配内存(因为它仅包含包装器)