2017-06-29 68 views
2

场景:在我的应用程序中,我有来自不同数据源的不同类型的模型,例如UserState和Tasks。我为这两个模型创建了两个独立的存储库,即UserStateRepository和TaskRepository。清洁架构/ MVP:对不同模型使用不同的存储库。好吗?

这两个都被注入到TaskPresenter中,根据来自两个存储库的数据显示任务和用户特定的信息。

其实这只是一种情况。我的应用程序有很多这样的模型,例如Dictionary,Resources等。几乎每个视图的演示者都需要注入两个存储库:UserStateRepository和“MetaInformation”存储库。因此,我最终得到至少7个不同的存储库。

PS:我使用Dagger2来注入这些存储库,但只有用户状态存储库是应用程序级别singelton,而其他存储库通常具有活动级别范围。这是因为每次创建活动的新实例时,我都需要刷新其他活动作用域存储库的缓存,但userstate必须保持不变。

问题:这个架构是否真的有意义或者有更好的解决方案?另外如何处理这些知识库的不同生命周期

+1

一般来说,是的。为不同的数据源分开存储库是有意义的。问一下自己是否存在一些“隐藏的依赖”,例如:您总是需要rep1的数据来查询rep2,在这种情况下,考虑创建另一个层,将相关的存储库合并到一个应用程序存储库中,以便于访问和清理码。 – mrsegev

回答

0

基本上说,是的,每个实体拥有一个存储库是一个好主意。

但是,有些情况下您可能不需要它。例如,你有一个具有Address实体的实体用户。当您不需要使用Address作为分隔的实体时,情况可能如此,相反,您可以将Address作为用户实体的一部分。因此,在这种特殊情况下,为用户设置存储库已足够,但不能用于Address。

相关问题