ios Uncle Bob的清洁架构建模用例

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

考虑Uncle Bob's Clean Architecture(或洋葱架构)
我有下面的场景:

  • 我想向用户展示一个地方的信息:名字,类别,坐标。
  • 我还希望在同一个屏幕上,一个按钮,当点击,重定向到一个Map应用程序显示的位置,该地方。

要重定向到Map应用程序,有一个简单的框架API可以接收坐标。
对于第一个问题,我应该有一个RetrievePlaceInformationInteractor(用例),它将接收一个地点id并返回名称、类别和坐标。
但对于第二个问题,我不知道是否应该:

  • 我有一个单独的OpenPlaceInMapInteractor(用例),它将接收位置id并返回Presenter中的框架API要使用的坐标。
  • 我有一个单独的OpenPlaceInMapInteractor(用例),它将接收位置ID并使用该框架API重定向到Map应用程序。
  • 使用相同的RetrievePlaceInformationInteractor获取坐标并将其填充到回调函数中,该函数调用框架API,并且在单击OpenInMap按钮时调用。

第一个看起来有点愚蠢,因为它本质上是一个交互器,只是为了检索一个属性,而这个属性已经被另一个交互器检索了。
第二个强制OpenPlaceInMapInteractor访问框架API,这有点违背了交互器层不访问以上各层的目的(当然,我可以使用API协议并使用依赖项注入,但我仍然依赖于框架特定的特性)。
第三个看起来很合理,但是我不是要在一个用例中实现两个用例吗?
我该怎么办?
谢谢你。

ldfqzlk8

ldfqzlk81#

在用例层中实现RetrievePlaceInformationInteractorOpenPlaceInMapInteractor,这两个用例层都从数据访问层内部调用getPlaceDetails,数据访问层是您希望进行依赖项反转的地方,以便DB层依赖于用例。
这样你就不用重复自己的话,你可以为两个用例中的每一个都指定合适的名称,你可以正确地将它们彼此分开,因为它们并不相同,因为它们返回了不同部分的地点细节。

相关问题