考虑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)。
1条答案
按热度按时间kfgdxczn1#
您的网关不应有任何业务逻辑,将您的逻辑保留在交互者内部,并仅将网关作为边界处理,从它的名称开始,网关应仅向内指向您的交互者,如果您添加任何逻辑,则违反了单一责任原则