清洁架构,数据请求协调器,演示者或用例/交互器?

时间:2018-03-05 15:14:20

标签: java android clean-architecture

谁应该从ui 编排/映射数据?例如,登录,我有usernamepassword

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

public class LoginPresenter {

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

2。)只需接受usernamepassword,然后 presenter将创建LoginParam 以传递{{1} }?或

use case

3。)最后,将public class LoginPresenter { public void login(String username, String password) { //create the object in the presenter loginUseCase.execute(LoginParam.create(username, password)) } } usernamepassword传递到presenter,然后usecase将创建usecase对象API调用?

LoginParam

然后是用例:

public class LoginPresenter {
   public void login(String username, String password) {
      loginUseCase.execute(username, password) //pass it through
      ...
   }
}

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

从我读过的事情来看,我没有找到任何具体的答案。 (或者也许我错过了/没有理解的东西大声笑)

1 个答案:

答案 0 :(得分:2)

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

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

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

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