gpt4 book ai didi

ios - 交互器或网关 - Uncle Bob 的简洁架构

转载 作者:行者123 更新时间:2023-12-05 06:42:57 25 4
gpt4 key购买 nike

考虑 Uncle Bob's Clean Architecture (或洋葱架构)

假设作为我应用程序中的登录用户,我收到了一个深层链接 url “myapp://events/[event_id]”(通过短信,例如)。

当我点击链接并在屏幕上显示Event的信息时,我想加入那个Event

过程是这样的:

  • 用户点击链接
  • 应用接收 url 并提取 event_id
  • 应用程序使用 event_id 检索Event 的信息
  • 应用将该信息保存在本地存储中
  • 应用程序发送 POST 请求让服务器知道有新用户(我)加入了事件
  • 应用向用户显示检索到的Event信息

当应用程序发送加入事件的 POST 请求时,它会发送 current_user 的 ID,该 ID 由后端处理(我使用 Parse 和 Facebook 登录)。这意味着所有用户身份验证都由 Gateway 处理(使用 Parse current_user 的 id 以 PFUser 的形式出现,但是一些其他实现它可能是 String,因此它必须由 Gateway 处理。

我的问题是,整个交互(加入 Event)应该由 Gateway 还是由 Interactor 处理?

  • 对我来说,Interactor 应该处理所有这些过程似乎更符合逻辑:
    1. 使用 event_id 检索信息
    2. current_user 添加到 Event
    3. 调用网关事件保存到本地)

      但是如果它由一个Interactor处理,这意味着这个Interactor需要PFUser的知识(如果我正在使用 Parse),如果我停止使用 Parse(我会这样做),将不得不更改它的实现。
  • 如果它由 Gateway 处理,则意味着 Interactor 只会将 join 调用转发给 Gateway
    (joinEventInteractor.join(eventId: String, callback: () -> ()) { eventGateway.join(eventId, callback: callback) }).

最佳答案

您的网关不应该有任何业务逻辑将您的逻辑保留在交互参与者中并且只将网关作为边界处理,从它的名字它是网关,它应该只向内指向你的交互者,如果你添加任何逻辑,那么你就违反了单一责任原则

关于ios - 交互器或网关 - Uncle Bob 的简洁架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com