ios 互动者还是门户--鲍勃叔叔的清洁建筑

1bqhqjot  于 2023-02-26  发布在  iOS
关注(0)|答案(1)|浏览(132)

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

假设我在我的应用程序中登录了User,我收到了一个深层链接url "myapp://events/[event_id]"(例如通过短信)。
我想加入那个Event,当我点击链接并在屏幕上显示Event的信息时。
过程如下:

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

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

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

1.在我看来,Interactor处理所有这些过程似乎更合乎逻辑:
1.使用event_id检索信息
1.将current_user添加到Event
1.调用Gateway以在本地保存Event
但是如果它是由Interactor处理的,这意味着这个Interactor将需要关于PFUser的知识(如果我正在使用Parse),并且如果我停止使用Parse(我将停止使用),将不得不更改它的实现。
1.如果由Gateway处理,则意味着Interactor将仅将join呼叫转发到Gateway
(x 1米30英寸1 x)。

kfgdxczn

kfgdxczn1#

您的网关不应有任何业务逻辑,将您的逻辑保留在交互者内部,并仅将网关作为边界处理,从它的名称开始,网关应仅向内指向您的交互者,如果您添加任何逻辑,则违反了单一责任原则

相关问题