代码之家  ›  专栏  ›  技术社区  ›  Tenten Ponce

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

  •  2
  • Tenten Ponce  · 技术社区  · 7 年前

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

    1)我应该接受 LoginParam “我的演示者”上的参数 然后从UI创建 登录RAM 对象然后提供它?或

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

    2)只需接受 用户名 暗语 然后 presenter 将创建 登录RAM 待传递 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)最后,通过 用户名 暗语 从…起 节目主持人 usecase 然后 使用案例 将创建 登录RAM API调用的对象?

    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))
          ...
       }
    }
    

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

    从我读到的东西来看,我没有找到我的问题的任何具体答案。(或者可能我错过了/不明白什么,哈哈)

    1 回复  |  直到 7 年前
        1
  •  4
  •   Sam Washburn    5 年前

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

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

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

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