Java androidclean体系结构中的登录流
我希望使用干净的体系结构实现一个简单的Firebase认证Android应用程序,这样根据Firebase文档可以检查用户是否已登录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();
@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的接口执行该检查。交互者还将决定登录检查失败时会发生什么 如果您想了解更多关于实现演示者的信息,请查看我的帖子: