2

谁应该从 ui中编排/映射数据?例如,登录,我有username并且password

1.) 我应该在我的演示者上接受LoginParamas参数,然后从 UI,创建LoginParam对象然后提供它吗?或者

public class LoginPresenter {

   public void login(LoginParam loginParam) { //pass the parameter from ui
      loginUseCase.execute(loginParam)
      ....
   }
}

2.) 只接受username然后passwordpresenter创建LoginParam要传递的use case?或者

public class LoginPresenter {

   public void login(String username, String password) {
      //create the object in the presenter
      loginUseCase.execute(LoginParam.create(username, password)) 
   }
}

3.) 最后,将usernameand passwordfrom传递presenterusecase然后会为 API 调用usecase创建对象吗?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))
      ...
   }
}

如果是这样,那为什么?(请说明你的答案,并指出错误的解决方案会出现的问题)

从我读过的东西来看,我没有找到任何关于我的问题的具体答案。(或者也许我错过了/不明白一些事情,哈哈)

4

1 回答 1

4

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

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

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

您可以在我的帖子中找到有关控制器-交互器-演示者交互的更详细讨论:https ://plainionist.github.io/Implementing-Clean-Architecture-Controller-Presenter/

于 2018-03-05T16:32:31.747 回答