考虑Uncle Bob's Clean Architecture(或洋葱架构)
我有以下情况:
要重定向到地图应用,有一个简单的框架API可以接收坐标。
对于第一个问题,我应该有一个RetrievePlaceInformationInteractor
(用例),它会收到一个地方ID并返回名称,类别和坐标。
但是对于第二个问题,我不知道是否应该:
OpenPlaceInMapInteractor
(用例),它将接收地点ID并返回Presenter
中该框架API使用的坐标。OpenPlaceInMapInteractor
(用例),它将接收地点ID并使用该框架API重定向到地图应用。RetrievePlaceInformationInteractor
获取坐标并将其填入回调中,该回调调用框架API,并在单击OpenInMap按钮时调用。第一个似乎有点愚蠢,因为它本质上只是一个交互器,只是为了检索一个属性,已经被另一个交互器检索。
第二个强制OpenPlaceInMapInteractor
访问框架API,这有点违背了交互层不访问上述层的目的(当然,我可以使用API的协议并使用依赖注入,但仍然,我依赖于特定于框架的功能。)
第三个似乎是合理的,但我不会在一个中实现2个用例吗?
我该怎么办?
谢谢。
答案 0 :(得分:1)
在用例层中实现RetrievePlaceInformationInteractor
和OpenPlaceInMapInteractor
,这两个层都在内部从数据访问层调用getPlaceDetails
,这是您要进行依赖项反转的地方,所以DB层取决于用例。
这样您就不会重复自己,为两个用例中的每一个分配适当的名称。你保持正确地将它们彼此分开,因为它们不相同,因为它们返回了地方细节的不同部分。