android MVP - 我可以为自定义视图和片段设置多个演示者吗

android MVP - can I have multiple presenters for custom views and fragments

所以我有一个已经绑定到 activity 的演示者。这本书说一个演示者应该绑定一个视图。但现在我添加了一些片段和大量自定义视图。我也在考虑将一个片段作为一个视图。自定义视图将包含一些逻辑。当然,片段和自定义视图都包含在我的 activity 中。

我的问题是,我应该在片段和自定义视图中重复使用相同的演示者,还是每个视图都应该有自己的演示者?我意识到这都是基于意见的,但我想要测试和保持代码清洁的最佳方法。

如果我确实有一个演示者来处理所有这些,那么演示者使用的界面将包含许多回调方法。同时,如果我做相反的事情并为每个视图创建一个演示者,它可能更容易阅读,但我将如何测试它?

最佳做法是创建一个 basepresenter ,然后为每个实现 basepresenter 的视图创建 presenter

View (Activity)可以有多个Presenters。如果 Activity 有多个 CustomViews,则每个 CustomView 可以有一个巨型 PresenterPresenter。这取决于:

  1. 如果所有 CustomViews 都有相同的需求,一个 Presenter 满足所有 CustomViews 就足够了。 Presenter's 范围还有两个选项:

    • PresenterActivityScopeActivity 使用 Presenter 并从 Presenter 调用。然后发送命令,数据到CustomViews
    • PresenterViewScope。每个 CustomView 创建和销毁相同的 Presenter

    CustomViews 不共享相同需求的情况下,有一个 PresenterViewInterface,它们将包含所有 CustomViews 需求的方法,因此每个 CustomView 必须实现 ViewInterface 中所有声明的方法,留一些空。

  2. 如果CustomViewsPresenter有不同的需求和方法调用,他们应该有自己的Presenter.

  3. 如果 CustomViews 有不同的需求,也有一些共同的需求,他们在一个 Presenter 中有共同的需求,在他们自己的 Presenters 中有特定的需求。 示例ActivityOneCustomViewOneCustomViewTwoCustomViews 的共同 Presenter 可以是 FeedPresenter(考虑到两个 CustomViews 都有 Feed List)。然后 CustomViewOne 将有 CustomPresenter1CustomViewTwo 将有 CustomPresenter2 以满足他们的特定需求。