Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java androidclean体系结构中的登录流_Java_Android_Design Patterns_Clean Architecture_Architectural Patterns - Fatal编程技术网

Java androidclean体系结构中的登录流

Java androidclean体系结构中的登录流,java,android,design-patterns,clean-architecture,architectural-patterns,Java,Android,Design Patterns,Clean Architecture,Architectural Patterns,我希望使用干净的体系结构实现一个简单的Firebase认证Android应用程序,这样根据Firebase文档可以检查用户是否已登录 @Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser();

我希望使用干净的体系结构实现一个简单的Firebase认证Android应用程序,这样根据Firebase文档可以检查用户是否已登录

@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);
 }
}
公共接口FirebaseAuthDataSource{ 单一登录用户(字符串用户名、字符串密码); 单个isUserLoggedIn(); } 公共类LoginUserUseCase{ 公共可观察buildUseCase(RequestValues RequestValues){ 返回firebaseAuthDataSource.loginUser(用户名、密码); } } 公共类登录中心{ public void onStart(){ firebaseAuthDataSource.isUserLoggedIn() .订阅(LoginView::navigateToMenuScreen); } }
那么像这样的条件,它们是否符合业务逻辑?还是流逻辑?

根据Bob叔叔的说法,UI不应该知道关于数据库的任何信息。这些条件属于框架层,所有数据库内容都应该在框架层中。通信通过用例和数据访问接口进行


如果这对您来说太费劲了,那么您也可以将将来可能发生变化的敏感部分转移到“干净的体系结构”中。但这只是我的意见。我希望这将对您有所帮助

根据Bob叔叔的说法,UI不应该知道关于数据库的任何信息。这些条件属于框架层,所有数据库内容都应该在框架层中。通信通过用例和数据访问接口进行


如果这对您来说太费劲了,那么您也可以将将来可能发生变化的敏感部分转移到“干净的体系结构”中。但这只是我的意见。我希望这将有助于您在干净的体系结构中,将尽可能多的逻辑放入用例层,即交互者。对数据库等细节的访问通过用例层中定义的接口抽象出来,并在框架/接口适配器层中实现。演讲者应该尽可能简单——理想情况下,只有“数据转换器”

在这种情况下,交互者将决定何时进行登录检查,并使用firebase DB的接口执行该检查。交互者还将决定登录检查失败时会发生什么


如果你想了解更多关于实现演示者的信息,请看我的帖子:

在干净的体系结构中,你尽可能多地将逻辑放入用例层,即交互者。对数据库等细节的访问通过用例层中定义的接口抽象出来,并在框架/接口适配器层中实现。演讲者应该尽可能简单——理想情况下,只有“数据转换器”

在这种情况下,交互者将决定何时进行登录检查,并使用firebase DB的接口执行该检查。交互者还将决定登录检查失败时会发生什么

如果您想了解更多关于实现演示者的信息,请查看我的帖子: