0

Firebase Documentation に従って、ユーザーがログインしているかどうかを確認できるように、Clean Architecture を使用して単純な Firebase Authentication Android アプリケーションを実装しようとしていました。

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    updateUI(currentUser);
}

したがって、この条件をどこに置くべきか、同じソースオブジェクトの助けを借りて独立して呼び出されるユースケースまたはプレゼンターにあるべきかについて混乱しています

何かのようなもの

public interface FirebaseAuthDataSource {
    Single<User> loginUser(String username, String password);
    Single<User> isUserLoggedIn();
}
public class LoginUserUseCase {
  public Observable<ResponseValues> buildUseCase(RequestValues requestValues) {
   return firebaseAuthDataSource.loginUser(username,password);
  }
}
public class LoginPresenter{
 public void onStart(){
  firebaseAuthDataSource.isUserLoggedIn()
  .subscribe(LoginView::navigateToMenuScreen);
 }
}

このような条件は、ビジネス ロジックと見なされますか? またはフローロジック?

4

2 に答える 2

1

クリーン アーキテクチャでは、可能な限り多くのロジックをユース ケース レイヤーであるインタラクターに配置します。データベースなどの詳細へのアクセスは、ユース ケース レイヤーで定義され、フレームワーク/インターフェイス アダプター レイヤーで実装されるインターフェイスによって抽象化されます。プレゼンターはできるだけ単純にする必要があります。理想的には「データ コンバーター」のみです。

あなたの場合、インタラクターはログインチェックをいつ行うかを決定し、firebase DB へのインターフェースを使用してそれを実行します。インタラクターは、ログイン チェックが失敗した場合の処理​​も決定します。

プレゼンターの実装について詳しく知りたい場合は、私の投稿をご覧ください: https://plainionist.github.io/Implementing-Clean-Architecture-Controller-Presenter/

于 2018-03-04T06:28:37.037 に答える