所以我有一个使用 firebase 登录和存储数据的应用程序,我们也使用 firebase 数据库表。
该应用程序具有使用 google 按钮登录,因此,如果验证了 google 帐户,我会将帐户传递给 firebase 以将其存储在数据库中。创建/获取帐户后,我还将用户配置文件存储在 firebase 数据库表中。所以我的问题是关于使用鲍勃叔叔的干净架构方法的存储库。
我应该为谷歌登录创建一个存储库,然后为个人资料创建一个存储库吗?我的意思是,如果我们看一下用例(交互器),应该有 agoogleAPIInteractor
和 afirebaseInteractor
吗?或者我应该只创建一个名为的交互器UserDataInteractor
?你明白我的意思吗?我对应该创建多少个存储库感到困惑。我认为每个新的存储库都会有自己的交互器,1:1 对吧?
让我们看看我想要实现的目标:
在演示者代码中(假设 MVP 架构)我会这样做:
public class MyPresenter extends PresenterBase {
@inject someGoogleAPIInteractor i1;
@inject somefirebaseInteractorInteractor i2;
//both these repo's are using firebase so should i just use 1 repo instead ?
//.....
public void doLogin(String googleAccount){
i1.fetchOrCreateGoogleLogin(,googleAccount,someSubscriber);
//RXJava async call, not important. but it confirms google account and then in subscriber authenticates into firebase account for my app
}
public void getProfile(String firebaseAccount) {
//this just gets stuff about the user like order history, name , etc
i2.getFirebaseProfile(firebaseAccount,someOtherSubscriber);
}
我在这里注入的交互者将使用他们自己的仓库。一个叫
@inject someGoogleAPILoginRepository r1; //in i1
//and another in i2 called:
@inject someFirebaseProfileRepository r2;
i1 连接到 google API 以验证 google 帐户,然后我将在回调中使用 i2 来创建配置文件。
所以我目前正在做的是google API有一个repo,firebase有一个repo,我有两个独立的交互器,这可以接受吗?事情是针对谷歌回购的,我没有存储任何东西。我只是在使用它,所以我有一个帐户可以登录到 firebase。