Java 干净的体系结构、数据请求协调器、演示者或用例/交互者?

Java 干净的体系结构、数据请求协调器、演示者或用例/交互者?,java,android,clean-architecture,Java,Android,Clean Architecture,谁应该协调/映射ui中的数据?例如,登录,我有用户名和密码: 1.我是否应该接受LoginParam作为演示者的参数,然后从UI创建LoginParam对象,然后提供它?或 public class LoginPresenter { public void login(LoginParam loginParam) { //pass the parameter from ui loginUseCase.execute(loginParam) .... } }

谁应该协调/映射ui中的数据?例如,登录,我有用户名和密码: 1.我是否应该接受LoginParam作为演示者的参数,然后从UI创建LoginParam对象,然后提供它?或

public class LoginPresenter {

   public void login(LoginParam loginParam) { //pass the parameter from ui
      loginUseCase.execute(loginParam)
      ....
   }
}
二,。只需接受用户名和密码,演示者就可以创建要传递的登录图?或

三,。最后,将用户名和密码从presenter传递给usecase,然后usecase将为API调用创建LoginParam对象

public class LoginPresenter {
   public void login(String username, String password) {
      loginUseCase.execute(username, password) //pass it through
      ...
   }
}
然后在用例上:

public class LoginUseCase {
   public Single<LoginResp> execute(String username, String password) {
      return userRepository.login(LoginParam.create(username, password))
      ...
   }
}
如果是,为什么?请证明您的答案,并指出错误解决方案将出现的问题


从我读到的东西来看,我没有找到任何具体的答案来回答我的问题。或者可能我错过了/不理解一些东西,哈哈

一般来说,Bob叔叔谈到了从视图发送到控制器的请求,以及从控制器发送到交互器的请求模型。控制器必须在请求和请求模型之间进行转换

在您的情况下,问题是您在哪里创建了LoginParam?如果类属于用例层,演示者将创建它。如果它属于接口适配器层,视图将创建它

理论上,您还可以决定将纯字符串从视图传递到控制器和用例交互器。拥有一个自定义类将更容易扩展非破坏性的api更改。如果您实际上有两个以上的参数,我会选择特定的请求对象接口适配器层和特定的请求模型用例层


关于控制器交互或演示者交互的更详细讨论,您可以在我的帖子中找到:

请澄清我的问题中的困惑之处,因为我认为我已将其删减,并且至少对我来说是特定的。不要只是否决投票。谢谢。我的登录图来自usercase/domain层,所以据我所知,因为它只有两个字符串用户名和密码,这也是视图方便的地方,我应该将其传递给演示者,然后演示者将创建对用例方便的登录图?是的。这将是一个务实的解决方案,并与依赖规则相一致。
public class LoginUseCase {
   public Single<LoginResp> execute(String username, String password) {
      return userRepository.login(LoginParam.create(username, password))
      ...
   }
}