问题:非常大且复杂的 Activity 类。难以阅读/理解和修改。很难测试。
可能的解决方案:Model-View-Presenter(可能使用依赖注入)。和模拟测试对象!
我计划在我的 Android 应用程序中实现 Model-View-Presenter。这基本上是模型-视图-控制器的变体。本质上,让 Activity 成为一个美化的布局管理器,并将任何业务逻辑交给 Presenter。查看 Presenter 的另一种方式是,它就像在 Activity 中实例化的 Helper 类,通过提供 Presenter 可以使用的接口/回调的 Activity 来完成繁重的工作。
我想了解一些社区对此的看法。例如: this 隐含了哪些接口?
Model 和 View 与 Presenter 相比有什么责任。
对于 Presenter,我想 Activity 会实现 Presenter 所需的接口吗?
Presenter vs. Activity 应该包含哪些内容?
演示者会与活动一对一吗?如果一个 Activity 有多个显示不同小部件的片段,每个片段都有自己的适配器呢?我们现在需要多个演示者还是仍然只需要一个?
Presenter vs. Adapter 怎么样?
演示者应该如何关联说具有 ListView 和 ListViewAdapter 的 Activity?Presenter 与 Adapter 有什么关系?
Presenter 应该选择要使用的适配器吗?还是应该由 Activity 做出这个决定?Presenter 应该处理模型数据还是适配器?适配器和演示者之间是否存在冲突?适配器是演示者吗?或更少/更多的东西。通常适配器仅适用于 Activity 中的 ListViews 等小部件。我认为他们不会拨打获取数据本身的电话。
所以在模型-视图-展示器中,关键是真正决定展示器与其他类的内容以及展示器与活动、适配器和视图/包括片段之间的通信应该是什么。
Model-View-Presenter 对 Android 来说真的是个坏主意吗?或者它是否适合 Android 框架?
请记住,在 Android 之外还有许多非常成熟的 SDK 的示例,它们仍然需要像 MVP 这样的微架构。事实上例子比比皆是:例如。Flex 是非常成熟的 Flash SDK,但它仍然需要几乎所有主要应用程序的 MVP 和 MVC 框架。
EJB 需要 Spring 来简化和组织它。MFC/Struts 等,不胜枚举。为什么Android应该有所不同?为什么我们要假设 SDK 具备在没有像 MVP 这样的设计模式的情况下 Android 所需的一切?
很高兴在我花费数百小时之前知道,请随时评论/回答这个问题的任何部分。