交互者或网关 - 鲍勃叔叔的清洁架构

时间:2016-02-05 01:58:38

标签: ios architecture onion-architecture

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

假设我在我的应用中已登录User,我会收到一个深层链接网址"myapp://events/[event_id]"(例如,通过短信)。

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

这个过程是这样的:

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

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

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

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

      如果它由Event处理,则表示此Interactor需要有关Interactor的知识(如果我正在使用Parse),并且会如果我停止使用Parse(我会),我必须改变它的实现。
  • 如果由PFUser处理,则表示Gateway只会将Interactor来电转发至join
    Gateway)。

1 个答案:

答案 0 :(得分:0)

您的网关不应该有任何业务逻辑,将您的逻辑保留在交互者内部 并仅将网关作为边界处理,从它的名称来看,它是网关,它应该只指向您的交互者,以防您添加任何逻辑,那么您就违反了单一职责原则