我有View1
< - > Presenter1
< - > Repository
。
在某些时刻,我创建View2
< - > Presenter2
。创建View1
时已加载所有必需的数据。我只需要在Presenter2
中使用它。我怎样才能做到这一点?我对存储库模式方法更感兴趣。
我应该这样做吗?:
class Repository {
private val list;
getData() {
...
list = result;
}
}
如果是这样,我如何保持list
持久,并且在View1
和View2
有效期内不会丢失信息?
我通常会像Repository
一样传递Presenter(new Repository)
。
答案 0 :(得分:0)
在这种情况下,您最好的方法是使用依赖注入(dagger2)在每个演示者中注入相同的存储库类实例。为此,您可以使您的存储库类成为单例:
<强> Appmodule.java 强>
@Module
public class AppModule {
...
@Provides
@Singleton
DataRepository provideDataRepository() {
return new DataRepository();
}
}
通过使用Singleton范围,您的存储库对象在整个应用程序中都是唯一的。如果您不知道如何使用匕首,您可以自己创建一个单独的类,但我强烈建议您查找如何使用匕首,因为这将使您的应用程序更加分离并且易于测试。
然后在您的演示者中,您所要做的就是注入存储库的实例。
<强> MyPresenter.java 强>
class MyPresenter{
private DataRepository repo;
@Inject
private MyPresenter(DataRepository repository){
this.repo = repository;
}
}