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