谁应该从ui 编排/映射数据?例如,登录,我有username
和password
:
1.)我应该在我的演示者上接受LoginParam
为参数,然后从用户界面创建LoginParam
对象然后提供它吗?或
public class LoginPresenter {
public void login(LoginParam loginParam) { //pass the parameter from ui
loginUseCase.execute(loginParam)
....
}
}
2。)只需接受username
和password
,然后 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))
}
}
和username
从password
传递到presenter
,然后usecase
将创建usecase
对象API调用?
LoginParam
然后是用例:
public class LoginPresenter {
public void login(String username, String password) {
loginUseCase.execute(username, password) //pass it through
...
}
}
如果是,那么为什么?(请证明你的答案,并指出错误解决方案会出现的问题)
从我读过的事情来看,我没有找到任何具体的答案。 (或者也许我错过了/没有理解的东西大声笑)
答案 0 :(得分:2)
一般来说,鲍勃叔叔谈到“从视图发送到控制器的请求”和“从控制器发送到交互器的请求模型”。控制器必须在请求和请求模型之间进行转换。
在你的情况下,问题是你在哪里创建了LoginParam?如果类属于用例层,则演示者将创建它。如果它属于接口适配器层,则视图将创建它。
理论上,您还可以决定将纯字符串从视图传递到控制器以及用例交互器。拥有一个自定义类将更容易扩展(不打破api更改)。如果您实际有两个以上的参数,我会选择特定的请求对象(接口适配器层)和特定的请求模型(用例层)。
有关您可以在我的帖子中找到的控制器 - 交互者 - 演示者互动的更详细讨论:https://plainionist.github.io/Implementing-Clean-Architecture-Controller-Presenter/