ANDROID MVP交互器与MVVM存储库

ANDROID MVP交互器与MVVM存储库,android,kotlin,mvvm,android-mvvm,android-mvp,Android,Kotlin,Mvvm,Android Mvvm,Android Mvp,我知道MVVM有View-Viemodel->Repository流程,其中Repository负责处理api调用、数据库调用 另一方面,在MVP中,我们有View-Presenter-interactior。 在我看来,MVP中的Interactor与MVVM中的repository非常相似。它们都使用服务进行网络和数据库调用,并将结果发送给Viewmodel/Presenter 我想更多地了解一下这个交互者-存储库的关系。 如果我们在MVP架构中有Interactor,我们不需要Reposi

我知道MVVM有View-Viemodel->Repository流程,其中Repository负责处理api调用、数据库调用

另一方面,在MVP中,我们有View-Presenter-interactior。 在我看来,MVP中的Interactor与MVVM中的repository非常相似。它们都使用服务进行网络和数据库调用,并将结果发送给Viewmodel/Presenter

我想更多地了解一下这个交互者-存储库的关系。 如果我们在MVP架构中有Interactor,我们不需要Repository类,因为网络层已经在Interactor类中分离了,这是真的吗? 我们还可以说MVP中的Interactor和MVVM中的repository几乎是一样的吗?
它们的不同点是什么?

交互者表示一个逻辑用例。interactor更像是架起了视图层(通过与演示者通信)与实现环境或存储库之间的桥梁。interactor用于清楚地了解您希望在应用程序中开发的用例

存储库,如您所述,为我们提供了干净的API来访问数据层,并将数据传递到域层(交互者/用例)

如果我们在MVP架构中有Interactor,我们不需要Repository类,因为网络层已经在Interactor类中分离了吗? 回答--No,因为我们希望避免处理表示逻辑和数据流逻辑的对象。我们还希望数据流逻辑能够跨不同的ViewModel重用。因此,最好不要直接从ViewModel/Presenter调用存储库,而使用一个额外的interactior/usecase来处理这个问题


作为参考-

交互者表示一个逻辑用例。interactor更像是架起了视图层(通过与演示者通信)与实现环境或存储库之间的桥梁。interactor用于清楚地了解您希望在应用程序中开发的用例

存储库,如您所述,为我们提供了干净的API来访问数据层,并将数据传递到域层(交互者/用例)

如果我们在MVP架构中有Interactor,我们不需要Repository类,因为网络层已经在Interactor类中分离了吗? 回答--No,因为我们希望避免处理表示逻辑和数据流逻辑的对象。我们还希望数据流逻辑能够跨不同的ViewModel重用。因此,最好不要直接从ViewModel/Presenter调用存储库,而使用一个额外的interactior/usecase来处理这个问题


参考-

所以在基本概念中是:MVP=模型(模型类)+视图+演示者(+存储库+交互者)MVVM=模型+视图+视图模型(+存储库+交互者)我们可以在这两种体系结构中添加交互者或存储库,问题是,我们有多希望将代码与Interactior和/或repository进行抽象和解耦?如果我们拒绝使用它们中的任何一个,我们将在Presenter/Viewmodel中使用数据流逻辑,这将使它成为“上帝类”,这不是很好的实践。这是正确的吗?所以在基本概念中是:MVP=模型(模型类)+视图+演示者(+存储库+交互器)MVVM=模型+视图+视图模型(+存储库+交互器)我们可以在这两种体系结构中添加交互器或存储库,问题是我们有多希望抽象代码并将其与交互器和/或存储库解耦?如果我们拒绝使用它们中的任何一个,我们将在Presenter/Viewmodel中使用数据流逻辑,这将使它成为“上帝类”,这不是很好的实践。是这样吗?