【发布时间】:2017-12-18 12:37:21
【问题描述】:
我看到了 MVP 架构的好例子(here 和 here)。两者都只呈现简单的交互器,但我想知道如何处理更复杂的用例,包括在其他用例中重复的步骤。
例如,我的 API 需要令牌来验证任何调用。我创建了一个交互器来获取该令牌 (GetToken)。我想获取用户的上次登录日期 (GetLastLoginDate),然后获取从该日期到现在 (GetVersionChanges) 之间发生的更改列表。
那些交互者应该被链接到哪里?我想将它们分开,因为其中一些在代码的其他部分中被重用。我想出了两个解决方案。
演示者应链接所有交互者。只要用例不复杂且没有太多先决条件,此解决方案就可以工作。在我看来,这不是正确的地方,因为它让演示者承担了另一项责任。
Interactor 可以使用许多存储库(没有破坏干净的架构规则)。为什么不在其他交互器中使用
TokenRepository?因为获取令牌比仅仅访问存储库要复杂得多。在其他交互器中重复这些步骤不会重用已经存在的代码。
这两种解决方案都有缺陷,并且违反了基本原则(DRY,单一责任原则)。
【问题讨论】:
标签: android mvp use-case clean-architecture