android MVP - 我可以有多个演示者用于自定义视图和片段
Posted
技术标签:
【中文标题】android MVP - 我可以有多个演示者用于自定义视图和片段【英文标题】:android MVP - can I have multiple presenters for custom views and fragments 【发布时间】:2017-08-23 14:18:59 【问题描述】:所以我有一个已经绑定到活动的演示者。这本书说,一个演讲者应该与一个观点联系在一起。但现在我添加了一些片段和许多自定义视图。我正在考虑将片段也视为视图。自定义视图将包含一些逻辑。当然,片段和自定义视图都包含在我的活动中。
我的问题是,我应该在片段和自定义视图中重复使用同一个演示者,还是每个视图都有自己的演示者?我意识到这都是基于意见的,但我想要测试和保持代码清洁的最佳方法。
如果我确实为所有这些少数几个提供了一个演示者,那么演示者使用的接口中将有许多回调方法。同时,如果我做相反的事情并为每个视图创建一个演示者,它可能更容易阅读,但我将如何测试它?
【问题讨论】:
【参考方案1】:View (Activity)
可以有多个Presenters
。如果Activity
有多个CustomViews
,则每个CustomView
可以有一个巨大的Presenter
或Presenter
。这取决于:
如果所有CustomViews
都有相同的需求,那么一个Presenter
对所有CustomViews
就足够了。 Presenter's
范围还有两个选项:
Presenter
有 ActivityScope。 Activity
使用 Presenter
并从 Presenter
调用。然后发送命令、数据到CustomViews
Presenter
有 ViewScope。每个CustomView
创建和销毁相同的Presenter
如果CustomViews
不共享相同的需求,有一个Presenter
和ViewInterface
,它们将包含所有CustomViews
需求的方法,因此每个CustomView
必须实现ViewInterface
中声明的所有方法,留一些空白。
如果CustomViews
对Presenter
有不同的需求和方法调用,应该有自己的Presenter
。
CustomViews
有不同的需求,也有一些共同的需求,他们有共同的需求在一个Presenter
,具体的需求在他们自己的Presenters
。 示例:ActivityOne
具有 CustomViewOne
和 CustomViewTwo
。两个CustomViews
的共同Presenter
可以是FeedPresenter
(考虑到两个CustomView 都有Feed List)。然后CustomViewOne
将拥有CustomPresenter1
和CustomViewTwo
将拥有CustomPresenter2
以满足他们的特定需求。
【讨论】:
【参考方案2】:最佳实践是创建一个 basepresenter ,然后为每个实现 basepresenter 的视图创建 Presenter
【讨论】:
顺便说一句,这是我现在遵循的最佳方法。以上是关于android MVP - 我可以有多个演示者用于自定义视图和片段的主要内容,如果未能解决你的问题,请参考以下文章
Android MVP - 应该避免在演示者中使用 R.string 引用吗?
应该将演示者(mvP)注入(dagger2)到android中的视图吗?
Android MVP:处理presenter类中的所有异常