2017-05-17 14 views
0

私はfirebaseをログイン用に使用し、データを保存するアプリケーションをfirebase DBテーブルも使用しています。Androidのクリーンアーキテクチャ - いつ新しいリポジトリを作成しますか?

アプリにはログインボタンがあるので、Googleアカウントが確認されていれば、そのアカウントをfirebaseに渡してdbに保存します。アカウントが作成/取得された後、ユーザープロファイルもfirebase DBテーブルに保存されます。だから私の質問は、叔父のボブのクリーンなアーキテクチャのアプローチを使用しているリポジトリについてです。

Googleログイン用のリポジトリとプロファイル用のリポジトリを作成する必要がありますか?つまり、ユースケース(インタラクタ)を見れば、googleAPIInteractorfirebaseInteractorの権利があるはずです。または、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);  

} 

私はここに注入された相互作用を使用します彼ら自身のレポ。一つはGoogleアカウントを認証するために

@inject someGoogleAPILoginRepository r1; //in i1 
//and another in i2 called: 
@inject someFirebaseProfileRepository r2; 

i1は、GoogleのAPIに接続すると呼ばれ、その後、私は、プロファイルを作成するために、コールバックでI2を使用します。

私は現在、Google APIにレポがあり、firebaseにレポがあり、2つの別個のインタラクタがあり、許容できるのですか?物事は、Googleのレポのために、私は何も格納されていません。私はそれを使用しているので、firebaseにログインするためのアカウントを持っています。

答えて

0

クリーンアーキテクチャで「リポジトリ」と記載されているのは設計パターンであり、実装ではありません。
これはデータレイヤーに適用され、すべてのソース(リモートまたはローカル)からアプリケーションのデータを操作する中心的な場所として機能します。
レポジトリとヘルパークラスを1か所(モジュールまたはパッケージ)に配置することをお勧めします。
そこからいくつかの良い例があります。
1. Android10's sample
2. Ribot's guideline
3. Google sample

関連する問題