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

时间:2017-03-29 21:38:18

标签: android architecture mvp

所以我有一个已经与活动挂钩的演示者。这本书说一个主持人应该绑在一个视图上。但现在我添加了一些片段和大量自定义视图。我正在考虑一个片段作为一个观点。自定义视图将包含一些逻辑。片段和自定义视图当然都包含在我的活动中。

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

如果我为所有这些少数人准备了一个演示者,那么接口演示者使用将有许多回调方法。同时,如果我做了相反的事情并为每个视图创建了一个演示者,那么它可能更容易阅读,但我将如何测试呢?

2 个答案:

答案 0 :(得分:8)

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

  1. 如果所有CustomViews共享相同的需求,则所有Presenter的{​​{1}}就足够了。 CustomViews范围仍有两个选项:

    • Presenter's ActivityScope Presenter使用Activity并从Presenter调用。然后将命令,数据发送到Presenter
    • CustomViews ViewScope 。每个Presenter都会创建并销毁相同的CustomView

    如果Presenter没有共享相同的需求,只有一个CustomViewsPresenter,它们将包含所有ViewInterface需求的方法,因此每个CustomViews必须在CustomView中实现所有声明的方法,留空。

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

  3. 如果Presenter有不同的需求和一些共同需求,那么他们就会在CustomViewsPresenter中分享共同的需求。 示例PresentersActivityOneCustomViewOne。两个CustomViewTwo的常见Presenter可以是CustomViews(考虑到两个CustomView都有Feed列表)。然后,FeedPresenterCustomViewOneCustomPresenter1CustomViewTwo满足其特定需求。

答案 1 :(得分:4)

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